Real Madrid limped back to the top of LaLiga despite dropping points for only the second time this season after being held to a 1-1 draw at home by lowly Girona.
Vinicius Jr. eased the home fans’ frustrations when he made the breakthrough in the 70th minute but 10 minutes later Cristhian Stuani levelled from the spot after a handball by Marco Asensio.
Rodrygo had a late effort ruled out by VAR for a foul on visiting goalkeeper Paulo Gazzaniga, and to compound Real’s sense of injustice they had Toni Kroos sent off deep into injury time.
Athletic Bilbao claimed their first win in five as Inaki Williams fired home a sublime effort just before the hour mark to sink Villarreal 1-0 at San Mames.
Two goals in the last four minutes from Juan Cruz and Borja Iglesias helped Real Betis to a 2-0 win at Real Sociedad.
An early Ezequiel Avila penalty and a 19th-minute effort from Moi Gomez proved enough for Osasuna to extend their unbeaten run to three games with a 2-0 home win over Real Valladolid.
AC Milan suffered a blow in their Serie A title defence as they lost 2-1 at Torino to fall six points behind leaders Napoli.
Two goals in two minutes from Koffi Djidji and Aleksei Miranchuk towards the end of the first half put the hosts in control and Junior Messias’ response after the break was not enough.
Milan’s loss allowed Atalanta to move into second place in the table after goals from Hans Hateboer and Ademola Lookman earned a 2-0 win at Empoli.
Lazio’s hopes of increasing the pressure on the teams above them fell flat despite Mattia Zaccagni’s 41st-minute opener at home to Salernitana.
The visitors levelled through a lob by Antonio Candreva before strikes from Federico Fazio and Boulaye Dia secured an impressive 3-1 win for Davide Nicola’s mid-table side.
Arthur Cabral grabbed a last-minute winner as Fiorentina returned to form with a 2-1 win at Spezia.
Nikola Milenkovic’s early opener for the visitors was cancelled out by M’Bala Nzola but Spezia’s Dimitris Nikolaou was sent off with eight minutes remaining.
Cremonese remain bottom of the table without a win after they were held to a goalless draw at home by Udinese.
Union Berlin returned to the top of the Bundesliga in dramatic fashion as they hit back late on to beat Borussia Monchengladbach 2-1.
The visitors led through a first-half strike from Nico Elvedi but substitute Kevin Behrens headed an equaliser on 79 minutes and Danilho Doekhi headed the winner from a corner in the seventh minute of injury time.
Freiburg retrieved third place as a Vincenzo Grifo brace saw them win 2-0 at rock-bottom Schalke, while Koln and Hoffenheim shared the points in a 1-1 draw.
Rennes moved into third place in Ligue 1 as goals from Martin Terrier, Arnaud Kalimuendo and Amine Gouiri saw them ease past Montpellier for their fifth straight win.
But high-flying Lorient slipped up in a 2-1 home defeat to Nice, for whom goals from Youcef Atal and Gaetan Laborde cancelled out Dango Ouattara’s early opener.
Alexandre Lacazette grabbed the only goal as Lyon beat Lille 1-0, while second-half strikes from Breel Embolo and Aleksandr Golovin helped Monaco to a 2-0 win over Angers.
Hamza Sakhi’s eighth-minute strike earned Auxerre a 1-0 win over fellow strugglers Ajaccio. Both sides finished with 10 men after Auxerre’s M’Baye Niang and Ajaccio’s Cedric Avinel were dismissed in the second half.
Nantes were held to a 1-1 draw at home to Clermont while the match between Brest and Reims ended goalless.