LaLiga leaders Barcelona restored an eight-point advantage over Real Madrid at the top with a 2-0 victory over Cadiz at the Nou Camp.
Sergi Roberto and Robert Lewandowski scored in quick succession late in the first half to ensure Barca matched second-placed Real’s scoreline at Osasuna on Saturday.
Antoine Griezmann struck a fine 73rd-minute winner as fourth-placed Atletico Madrid beat Athletic Bilbao 1-0 at home.
Rayo Vallecano and Sevilla drew 1-1 at Vallecas, while Espanyol are four points clear of the relegation zone after a goal in stoppage time from Sergi Darder earned them a 1-0 win at bottom side Elche, who had Jose Carmona sent off in the 81st minute.
Ligue 1 table-toppers Paris St Germain claimed a dramatic 4-3 win over Lille at the Parc des Princes thanks to Lionel Messi’s stoppage-time free-kick.
PSG led 2-0 early on through efforts from Kylian Mbappe and Neymar, before Bafode Diakite replied for the visitors.
After Neymar came off injured on a stretcher in the 50th minute, the turnaround continued with a Jonathan David penalty and Jonathan Bamba putting Lille in front.
But the pendulum would eventually swing back the other way, with Mbappe notching an 87th-minute equaliser and Messi then producing another moment of magic in time added on.
Marseille, five points behind in second, came from 1-0 down to win 3-2 at Toulouse, with Chancel Mbemba, Cengiz Under and Nuno Tavares each netting after the break.
Third-placed Monaco won 2-1 at Brest, Aleksandr Golovin and Myron Boadu getting on the scoresheet for the away side either side of the interval, and Lens, a point worse off in fourth, beat Nantes 3-1.
Arnaud Kalimuendo registered a brace in Rennes’ 2-0 win over Clermont, Wahbi Kazri scored late to give Montpellier a 1-0 win at Troyes after each side had had a man sent off, and Lorient beat Ajaccio 3-0.
Union Berlin missed the chance to replace Bayern Munich at the top of the Bundesliga as they were held 0-0 at home by basement boys Schalke.
They join Bayern, beaten 3-2 at Borussia Monchegladbach on Saturday, on 43 points, as do Borussia Dortmund, who moved up to second with a 4-1 thumping of second-bottom Hertha Berlin. Karim Adeyemi, Donyell Malen, Marco Reus and Julian Brandt scored for Dortmund.
Sunday’s other top-flight game in Germany saw Marcus Ingvartsen’s late penalty secure a 3-2 win for Mainz at 10-man Bayer Leverkusen.
In Serie A, Roma are third after an Ola Solbakken effort saw them to a 1-0 home victory against Hellas Verona, and Lazio won 2-0 at Salernitana courtesy of a Ciro Immobile double including a penalty, with the hosts having Dylan Bronn sent off late on in their first match under Paulo Sousa.
Atalanta lost 2-1 at home to Lecce, Juventus moved up to seventh following a third straight league win, Moise Kean and Angel Di Maria scoring the goals as they won 2-0 at managerless Spezia, and Fiorentina and Empoli drew 1-1.