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.
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.
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.
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.
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.
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.
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.
Why are you making commenting on The Herald only available to subscribers?
It should have been a safe space for informed debate, somewhere for readers to discuss issues around the biggest stories of the day, but all too often the below the line comments on most websites have become bogged down by off-topic discussions and abuse.
heraldscotland.com is tackling this problem by allowing only subscribers to comment.
We are doing this to improve the experience for our loyal readers and we believe it will reduce the ability of trolls and troublemakers, who occasionally find their way onto our site, to abuse our journalists and readers. We also hope it will help the comments section fulfil its promise as a part of Scotland's conversation with itself.
We are lucky at The Herald. We are read by an informed, educated readership who can add their knowledge and insights to our stories.
That is invaluable.
We are making the subscriber-only change to support our valued readers, who tell us they don't want the site cluttered up with irrelevant comments, untruths and abuse.
In the past, the journalist’s job was to collect and distribute information to the audience. Technology means that readers can shape a discussion. We look forward to hearing from you on heraldscotland.com
Comments & Moderation
Readers’ comments: You are personally liable for the content of any comments you upload to this website, so please act responsibly. We do not pre-moderate or monitor readers’ comments appearing on our websites, but we do post-moderate in response to complaints we receive or otherwise when a potential problem comes to our attention. You can make a complaint by using the ‘report this post’ link . We may then apply our discretion under the user terms to amend or delete comments.
Post moderation is undertaken full-time 9am-6pm on weekdays, and on a part-time basis outwith those hours.
Read the rules here