Juventus scored three goals in seven minutes to come from behind in a thrilling 4-3 victory away at Roma.
The home side had led 3-1 with just over 20 minutes left before Juve’s stunning comeback. Roma’s Lorenzo Pellegrini also had a late penalty saved by Wojciech Szczesny after Matthijs De Ligt had been shown a second yellow card for handball.
Tammy Abraham nodded home Jordan Veretout’s near-post corner to open the scoring before Paulo Dybala levelled things up.
Henrikh Mkhitaryan restored Roma’s lead at the start of the second half and Pellegrini curled a stunning 25-yard free-kick into the top corner to seemingly put the home side on course for the win.
However, goals from Manuel Locatelli, substitute Dejan Kulusevski and Mattia De Sciglio turned the match on its head.
The win keeps Juventus fifth and three points behind fourth-placed Atalanta, who occupy the final Champions League spot after thrashing Udinese 6-2.
AC Milan kept up the pressure on title rivals Inter with a comfortable 3-0 win at Venezia. Zlatan Ibrahimovic opened the scoring before a Theo Hernandez double.
Venezia were reduced to 10 men when defender Michael Svoboda was sent off for handling the ball on the line, with Hernandez dispatching the spot-kick.
The win briefly moved Milan to the top of the Serie A table, though Inter returned to the summit with a 2-1 home win against Lazio.
Milan Skriniar headed a second-half winner for Simone Inzaghi’s side after Ciro Immobile had cancelled out Alessandro Bastoni’s early opener at San Siro.
Napoli stay third after Andrea Petagna’s goal gave them a 1-0 home win against Sampdoria.
Gianluca Scamacca scored a hat-trick in Sassuolo’s 5-1 victory at Empoli, who had Mattia Viti sent off on the hour mark.
Salernitana gained only their third league win of the season as they won 2-1 at Verona, while Spezia won 1-0 at Genoa.
In Spain, Sevilla kept in touch with LaLiga leaders Real Madrid with a 1-0 home win against Getafe – Rafa Mir scored the goal in the first half.
Atletico Madrid stay in the top four despite dropping more points with a 2-2 draw at Villarreal.
Angel Correa put Atleti ahead but goals from Pau Torres and Alberto Moreno turned the game on its head.
Geoffrey Kondogbia netted the equaliser for the visitors before being sent off in injury time.
Ivan Balliu cancelled out Sergio Canales’ opener for Real Betis to earn Rayo Vallecano a 1-1 draw, with the away side playing much of the match with 10 men after Alex Moreno’s red card after half an hour.
Osasuna beat Cadiz 2-0 while Alaves and Athletic Bilbao contested a goalless draw.
Ligue 1 leaders Paris St Germain drew 1-1 at Lyon, with Thilo Kehrer cancelling out Lucas Paqueta’s early opening goal for the hosts.
Goals from Kasper Dolberg, Andy Delort and Amine Gouiri saw second-placed Nice win 3-0 at Brest, despite Morgan Schneiderlin’s red card after just 20 minutes.
Strasbourg were 2-0 winners at Metz while Clermont against Reims and Nantes against Monaco both finished goalless.
Anthony Modeste scored his 14th goal of the season to help Cologne win 3-1 at Hertha Berlin and climb up to sixth in the Bundesliga, while Bochum beat Wolfsburg 1-0 in the only other game in Germany.