Barcelona claimed a LaLiga stoppage-time winner to overcome Levante 3-2 after conceding three penalties at the Estadi Ciutat de Valencia.
Luuk De Jong headed home in the second minute of injury time as Barca extended their unbeaten league run to 15 games.
An incredible see-saw contest saw Levante take the lead through Jose Luis Morales’ 52nd-minute penalty.
Two minutes later Eric Garcia handled and Roger Marti saw his effort from 12 yards saved by Marc-Andre ter Stegen, and Barcelona quickly hit the front through Pierre-Emerick Aubameyang and Pedri.
Gonzalo Melero leveled seven minutes from time from Levante’s third penalty, before De Jong headed home Jordi Alba’s cross to move Barca within 12 points of leaders Real Madrid.
Real Sociedad recovered from Guido Carrillo’s third-minute opener to see off Elche 2-1, with Alexander Sorloth and Robin Le Normand on target before the interval.
Espanyol beat Celta Vigo 1-0 as Wu Lei grabbed an 89th-minute winner, while Ante Budimir’s stoppage-time strike saw Osasuna home against bottom-placed Alaves.
Serie A leaders AC Milan saw their title hopes frustrated by a goalless draw at Torino.
Milan struggled to cut through a disciplined home defense and city rivals Inter will climb above them by winning their game in hand.
Ciro Immobile went top of the Serie A goal charts with a hat-trick in Lazio’s 4-1 win at Genoa.
Italy striker Immobile made it 24 goals for the season after Adam Marusic had put the visitors ahead.
Immobile doubled Lazio’s lead on the stroke of half-time and then scored either side of a Patric’s own goal.
Juventus striker Dusan Vlahovic had previously been on top of the goal standings with 22.
Fiorentina stunned third-placed Napoli with a 3-2 away win.
Nicolas Gonzalez had Fiorentina ahead at half-time, but substitute Dries Mertens leveled after 58 minutes with practically his first touch.
Jonathan Ikone and Arthur Cabral struck in the space of six minutes to ensure Victor Osimhen’s late effort was no more than a consolation.
Roma staged a late show to beat Salernitana 2-1 and stay fifth, two points above Lazio.
Ivan Radovanovic put the visitors ahead midway through the first half before Carles Peres and Chris Smalling scored for Jose Mourinho’s side in the final 10 minutes.
Hamed Traore scored twice as Sassuolo upset Atalanta 2-1, and Udinese triumphed by the same scoreline at Venezia courtesy of Rodrigo Becao’s last-gasp winner.
In the Bundesliga, third-placed Bayer Leverkusen were frustrated by a 0-0 draw at Bochum.
France winger Moussa Diaby had a penalty ruled out as he struck the ball twice after his right foot buckled.
RB Leipzig moved within a point of Leverkusen as Christopher Nkunku, Marcel Halstenberg and Dominik Szoboszlai scored in a comfortable 3-0 win over Hoffenheim.
Freiburg stayed in top-four contention with a 2-1 victory at Eintracht Frankfurt.
Substitute Nils Petersen thanked a 69th-minute winner after Filip Kostic had canceled out Vincenzo Grifo’s opener for Freiburg.
Marseille moved into second spot in Ligue 1 – 12 points behind leaders Paris St Germain – with a 2-0 home win over Montpellier.
Bamba Dieng and Cengiz Under, from the penalty spot, were on target inside the opening quarter against visitors who had goalkeeper Jonas Omlin sent off in the final minute.
Monaco beat Troyes 2-1 to stay sixth and there were 1-1 draws between Angers and Lille, Brest and Nantes and Strasbourg and Lyon.
Lens beat Nice 3-0 despite having Massadio Haidara sent off after 17 minutes. Arnaud Kalimuendo-Muinga (2) and Cheick Doucoure scored second-half goals as Nice finished with nine men following red cards for Mario Lemina and Dante.
Bordeaux beat Metz 3-1 to leapfrog them at the bottom of the table.