Paris St Germain were crowned Ligue 1 champions for a record-extending 12th time on Sunday as second-placed Monaco lost 3-2 at Lyon.
The latest success for Luis Enrique’s side means Kylian Mbappe, whose contract expires in the summer, will depart the French capital with seven league titles.
Trailing by 12 points, only a win would do for Monaco to stay alive in the title race, and they took the lead after just 20 seconds through Wissam Ben Yedder.
But Lyon hit back through Alexandre Lacazette and Said Benrahma to turn the game around before the 25th minute.
Ben Yedder levelled on the hour mark but Youssouf Fofana headed in an 84th-minute winner for Lyon.
Brest sit two points behind Monaco after winning a nine-goal thriller 5-4 at Rennes.
Arnaud Kalimuendo’s brace gave Rennes an early 2-0 lead, but Brest responded through Steve Mounie, then drew level with a Warmed Omari own goal early in the second half.
Martin Satriano and Mahdi Camara put the visitors 4-2 up but Arthur Theate and Martin Terrier levelled things up, only for Lilian Brassier to win it deep into stoppage time.
Lille are a further point back in fourth after goals from Ismaily and Yusuf Yazici saw them come from behind to win 2-1 at struggling Metz.
Evann Guessand, Dante and Morgan Sanson scored as Nice won 3-1 at Strasbourg, leaving them five points clear of Lens who lost 2-1 at Marseille after Papa Gueye’s 86th-minute winner.
Clermont boosted their slim survival hopes with a 4-1 win over Reims as Muhammed-Cham Saracevic and Elbasan Rashani scored two each, putting them one point behind Lorient who lost 2-1 at home to Toulouse.
Hakan Calhanoglu grabbed two goals as Inter Milan eased to a 2-0 win over 10-man Torino before taking an open-top bus ride into the city to celebrate their Serie A crown.
Torino were reduced to 10 men four minutes into the second half when referee Maria Sole Ferrieri Caputi – heading the first all-female group to officiate a Serie A match – sent off Adrien Tameze for a foul on Henrikh Mkhitaryan.
Mkhitaryan then set up Calhanoglu for the opener before the second came from the penalty spot after a foul on Marcus Thuram.
Tammy Abraham’s late header saw Roma take a point from a 2-2 draw against a wasteful Napoli.
The hosts dominated the game but it was Roma who led through Paulo Dybala’s 59th-minute penalty. Mathias Olivera’s deflected shot drew Napoli level before Victor Osimhen’s 84th minute penalty, but Abraham snatched a late equaliser.
Fourth-placed Bologna could only take a point from relegation-battling Udinese in a hard-fought 1-1 draw.
Martin Payero put the visitors in front and Bologna then lost Sam Beukema to a 64th-minute red card before Alexis Saelemaekers levelled.
Atalanta are up to sixth after goals from Mario Pasalic and Ademola Lookman in a 2-0 win over Empoli, while Nicolas Gonzalez scored twice as Fiorentina routed relegation-threatened Sassuolo 5-1.
In Germany, Darmstadt’s relegation from the Bundesliga was confirmed with a 1-0 home defeat to Heidenheim.
Substitute Nikola Dovedan got the goal in the last minute to leave Darmstadt 11 points from the relegation play-off place with three games left.
Mainz remain in that play-off place, two points from safety, after a 1-1 draw with fellow strugglers Cologne, who got a 90th-minute equaliser through Florian Kainz’s penalty.
Borussia Monchengladbach and Union Berlin remain just above trouble after sharing the points from a goalless draw.
In Spain, Granada stayed alive with a 3-0 win over Osasuna, while Cadiz also boosted their survival hopes with a 1-1 draw against Mallorca leaving then five points from safety.
Alexander Sorloth scored twice to help Villarreal to a 3-0 win over Rayo Vallecano, while Real Betis and Sevilla drew 1-1.
The best videos delivered daily
Watch the stories that matter, right from your inbox