Substitute Mauro Icardi struck a last-minute winner as Paris Saint-Germain beat Lyon 2-1 on Lionel Messi's home debut at the Parc des Princes.
Messi went close early on after being played in by a backheel from Neymar and his shot was saved by Anthony Lopes before he hit the angle of crossbar and post with a 30-yard free-kick.
Lyon broke the deadlock nine minutes into the second half through Lucas Paqueta.
Neymar equalised from the penalty spot in the 66th minute for his first Ligue 1 goal of the season.
Messi was substituted with 15 minutes left, replaced by right-back Achraf Hakimi.
Just when it seemed PSG would have to settle for a point, Kylian Mbappe’s cross from the left was headed into the bottom corner by Icardi to move them five points clear at the top.
Earlier on Sunday, Marseille beat Rennes to sit second, with a match in hand.
Ahmadou Bamba Dieng, with his third goal in two games, and substitute Amine Harit were on target in the second half.
The Derby de la Cote d’Azur between Nice and Monaco finished 2-2 after Amine Gouiri missed a late penalty at the Allianz Riviera.
Russia midfielder Aleksandr Golovin had put Monaco ahead in the 39th minute, but Andy Delort headed in a equaliser early in the second half before Hichem Boudaoui fired the hosts in front.
Monaco, though, were level in the 77th minute when Wissam Ben Yedder slotted in a penalty and there was a dramatic finale when Nice frontman Gouiri fired his spot-kick wide with just two minutes left.
Nantes rant out 4-1 winners at Angers, with Ludovic Blas scoring twice as the hosts suffered a first league defeat.
Teji Savanier’s late goal earned 10-man Montpellier a 1-1 draw at promoted Troyes after Brazilian defender Thuler had been sent off.
Clermont saw midfielder Johan Gastien dismissed early in the second half as they drew 1-1 at home to Brest, but it finished goalless between Reims and Lorient at Stade Auguste-Delaune.
In La Liga, Real Madrid scored twice in the final four minutes to win 2-1 at Valencia.
Hugo Duro broke the deadlock just after the hour, which looked set to be enough for all three points.
However, Vinicius Junior equalised with four minutes to go before setting up Karim Benzema to nod in a dramatic winner which sent Carlo Ancelotti’s side two points clear at the top.
Espanyol’s Leandro Cabrera struck a last-minute equaliser to draw 2-2 at Real Betis, who finished with 10 men.
Aleix Vidal gave the visitors an early lead, but Betis turned things with goals from William Jose and Nabil Fekir shortly before half-time.
Betis defender German Pezzella saw red with 12 minutes left and Cabrera struck deep into stoppage time to earn the visitors a point.
Real Sociedad missed the chance to close up on the leaders after being held to a 0-0 draw at home by Sevilla, while it also finished goalless between Mallorca and Villarreal.
Juventus’ search for a first Serie A win went on after being held to a 1-1 draw at home by AC Milan.
Alvaro Morata gave the visitors an early lead, with Ante Rebic heading in an equaliser with 14 minutes left.
Juve are 18th, while Milan moved level on 10 points with leaders Inter.
Roma suffered a first league defeat as they were beaten 3-2 at Hellas Verona.
Lorenzo Pellegrini put the visitors in front, but goals from Antonin Barak and Gianluca Caprari turned things around early in the second half.
An own goal from Ivan Ilic levelled things up just before the hour, only for captain Marco Davide Faraoni to secure all three points when his volley crashed in off the bar.
Francesco Caputo scored twice as Sampdoria won 3-0 at Empoli, while Danilo Cataldi’s late equaliser saw Lazio rescue a 2-2 draw against Cagliari, who had substitute Gabriele Zappa sent off in stoppage time.
A stoppage-time strike from Mehdi Bourabia secured Spezia’s first league victory with a 2-1 win at Venezia.
In the Bundesliga, Erling Braut Haaland scored twice as Borussia Dortmund beat Union Berlin 4-2 at Signal Iduna Park.
Defender Raphael Guerreiro have the hosts an early lead, which Haaland doubled with a bullet header in the 24th minute.
Marvin Friedrich’s own goal further extended the lead at the start of the second half before Max Kruse pulled one back for Berlin from the penalty spot.
Union substitute Andreas Voglsammer set up a tense last 10 minutes, but Haaland lobbed in a well-taken second to settle any nerves as Dortmund moved to within a point of leaders Bayern Munich.
Wolfsburg missed the chance to go clear at the top after being held to a 1-1 draw at home by Eintracht Frankfurt, with Wout Weghorst hitting a late equaliser.
Bayer Leverkusen sit fourth after a 3-1 win at Stuttgart, where they had midfielder Robert Andrich sent off in the first half.