Striker Portu scored twice as Girona fought back to beat Barcelona 4-2 and hand Real Madrid the LaLiga title.
Barca ran out at the Estadio Municipal de Montilivi knowing anything other than victory would leave them unable to catch the leaders, who had earlier eased to a 3-0 win over lowly Cadiz.
In the event, they led 1-0 and 2-1 as Andreas Christensen and Roberto Lewandowski from the penalty spot struck either side of Artem Dovbyk’s fourth-minute equaliser.
🙌 WE ARE THE LALIGA 2023/24 CHAMPIONS! 🙌 pic.twitter.com/Yo5QFw3SUO
— Real Madrid C.F. 🇬🇧🇺🇸 (@realmadriden) May 4, 2024
However, Portu levelled 20 minutes into the second half and, after Miguel Gutierrez had put the home side ahead, sealed a win which sparked celebrations in Madrid and lifted his side above the Catalans into second place.
Earlier, Jude Bellingham scored two minutes after coming off the bench to help ease the leaders to victory over relegation-haunted Cadiz.
It was goalless at half-time at the Bernabeu, but Brahim Diaz broke the deadlock six minutes after the restart and England international Bellingham, a 66th-minute replacement for Arda Guler, made it 2-0 with his 22nd goal of the season before Joselu wrapped up the win deep into injury time.
Defeat left Cadiz five points shy of safety with four games remaining.
Silas! ⚪️🔴🫶#VfB | #VfBFCB 3-1 pic.twitter.com/xQ7xac9NOS
— VfB Stuttgart_int (@VfB_int) May 4, 2024
If Girona are already assured of a top-four finish, Atletico Madrid still have work to do despite Rodrigo Riquelme cementing them in fourth place with a 1-0 win at Real Mallorca.
Meanwhile, Alex Suarez’s own goal and Sheraldo Becker’s strike handed Real Sociedad a 2-0 home win over Las Palmas.
In the Bundesliga, Jeong Woo-yeong and Silas struck late to fire Stuttgart to a 3-1 victory over Bayern Munich and claim a guaranteed top-four spot.
Leonidas Stergiou had given third-placed Stuttgart a 29th-minute lead which was cancelled out by Harry Kane from the penalty spot, but Jeong struck with seven minutes remaining and Silas made sure in stoppage time to reduced the gap to Bayern in second to just two points with as many games remaining.
Big dubs only 😤 pic.twitter.com/FcnxTI1yrO
— Borussia Dortmund (@BlackYellow) May 4, 2024
Youssoufa Moukoko scored twice as Dortmund maintained their pursuit of the top four with a 5-1 demolition of Augsburg at Signal Iduna Park.
Moukoko’s double came either side of Donyell Malen’s strike, and although Ruben Vargas reduced the deficit, further goals from Marco Reus and Felix Nmecha completed a comfortable afternoon for the home side.
Borussia Monchengladbach needed a last-gasp Florian Neuhaus penalty to secure a 2-2 draw at Werder Bremen.
The visitors led through Robin Hack’s eighth-minute opener, but trailed to Nick Woltemade’s double until substitute Neuhaus converted his stoppage-time spot-kick.
FINALE | #SassuoloInter 1⃣-0⃣
🖤💚🖤💚💪💪💪#ForzaSasol pic.twitter.com/ojVAHTDKk0
— U.S. Sassuolo (@SassuoloUS) May 4, 2024
Goals from Patrick Wimmer, Jonas Wind and substitute Vaclav Cerny saw Wolfsburg cruise to a 3-0 home win over relegated Darmstadt, while Cologne remain in deep trouble after a 0-0 home draw with Freiburg.
Armand Lauriente ended champions Inter Milan’s 28-game unbeaten Serie A run as Sassuolo completed an improbable double to keep alive their survival hopes.
Lauriente’s 20th-minute strike clinched a precious 1-0 win over a much-changed Inter to go with their 2-1 success at the San Siro on September 27.
Milan Duric headed home a late equaliser to deny Lazio victory at Monza.
𝙎𝙏𝙍𝙄𝙆𝙀𝙁𝙊𝙍𝘾𝙀 🚀#ASMCF63 pic.twitter.com/NeFMA8be1o
— AS Monaco EN (@AS_Monaco_EN) May 4, 2024
Duric, who had earlier cancelled out Ciro Immobile’s 11th-minute opener, repeated the dose at the death to secure a 2-2 draw after Matias Vecino had pounced on an error by Giulio Donati to restore the visitors’ lead.
In Ligue 1, Wissam Ben Yedder cemented a 4-1 victory and a Champions League play-off spot at worst for second-placed Monaco with two second-half goals against bottom-of-the-table Clermont.
Takumi Minamino and Breel Embolo were also on target with Muhammed Cham replying for the visitors.
Third-placed Brest suffered the frustration of being held to a 0-0 home draw by Nantes, but Yassine Kechta’s double boosted Le Havre’s survival hopes as they beat Strasbourg 3-1 to move three points clear of the bottom three.
Ne rien lâcher, jusqu'au bout ✊#FCMSRFC pic.twitter.com/VaWjVcB51G
— Stade Rennais F.C. (@staderennais) May 4, 2024
Kechta struck either side of the break and although Frederic Guilbert pulled one back for the visitors late on, Andre Ayew settled the nerves with a third in stoppage time.
Arnaud Kalimuendo fired Rennes to a dramatic victory at struggling Metz as the visitors twice came from behind to win 3-2.
Amine Gouiri and Benjamin Bourigeaud hit back after Georges Mikautadze and Papa Diallo had scored for the home side, setting up Kalimuendo to win it with Mikautadze seeing red for violent conduct in added time.