Dusan Vlahovic’s stoppage-time header saw Juventus come from behind to win 2-1 at 10-man Salernitana.
The Bianconeri had run out comfortable 6-1 winners in the Coppa Italia tie between the sides in Turin on Thursday night – but found themselves behind shortly before half-time at the Arechi Stadium when Giulio Maggiore finished off a swift counter-attack.
Maggiore was then dismissed for a second caution in the 53rd minute and Juve substitute Samuel Iling Junior equalised just after the hour.
When it seemed Serie A’s bottom club would hold out for a valuable point in their survival fight, Vlahovic headed in a looping cross from Danilo to seal a dramatic win and put Juventus back to two points behind Serie A leaders Inter.
AC Milan had earlier extended their unbeaten run to six games in all competitions with a 3-0 win at strugglers Empoli.
Ruben Loftus-Cheek put the Rossoneri ahead in the 11th minute and Olivier Giroud doubled the lead from the penalty spot before half-time.
Teenager Chaka Traore, who opened his Milan account in Tuesday’s Coppa Italia victory over Cagliari, wrapped things up with a late third.
Napoli’s dismal season continued with a 3-0 defeat at Torino to slump to ninth in the table.
Antonio Sanabria, Nikola Vlasic and Alessandro Buongiorno were on target for the hosts as the defending champions endured another miserable afternoon – with wing-back Pasquale Mazzocchi having been sent off four minutes after coming on for his debut.
Saturday’s evening kick-off saw Atalanta draw 1-1 at top-six rivals Roma, while Lazio recorded a third straight victory with a 2-1 win at relegation-battlers Udinese.
Barcelona were made to work for their place in the last 16 of the Copa del Rey with a 3-2 win at fourth tier Barbastro.
Raphinha struck in each half to seemingly put the LaLiga side in control.
The Segunda B outfit, though, pulled a goal back on the hour through Adria de Mesa before Robert Lewandowski added Barca’s third from the penalty spot with two minutes left.
Barbastro reduced the deficit again in stoppage time when Marc Prat slotted home a spot-kick, but there was to be no grandstand finish as Barca saw out the closing stages.
Villarreal’s tie at Unionistas was abandoned following a lighting problem at the Municipal Reina Sofia stadium ahead of the start of extra-time, with the scores level at 1-1.
Last-season’s runners-up Osasuna needed extra-time to get past third tier Castellon 1-0 – as did Valencia in their 2-1 win at LaLiga2 side Cartagena, who had played the second half with 10 men.
Celta Vigo fought out at 4-2 win at Segunda Division Amorebieta, while Mallorca won 3-0 at Burgos.
Juanlu Sanchez’s late goal helped Sevilla to a 2-1 victory over 10-man Racing Ferrol, while Athletic Bilbao beat Eibar 3-0 and Real Sociedad won 1-0 in Malaga.
Kylian Mbappe scored a hat-trick as Paris St Germain coasted to a 9-0 win over sixth-tier Revel in their Coupe de France tie.
Marco Asensio was also on target in the first half, when the Regional 1 side scored an own goal, before Mbappe completed his treble three minutes after the restart at the Stade Pierre-Fabre in Castres.
Goncalo Ramos added a sixth from the penalty spot before Randal Kolo Muani scored twice late on, either side of Cher Ndour’s first PSG goal, to wrap up a comfortable night’s work for the Ligue 1 leaders.
Pierre-Emerick Aubameyang’s second-half strike gave Marseille – depleted by players away at the Africa Cup of Nations – a 1-0 win at fifth-tier Thionville Lusitanos.
In an all-Ligue 1 tie, Monaco edged past Lens 6-5 on penalties having been 2-0 up inside the opening 20 minutes before the hosts mounted a fightback to draw 2-2.
Lyon coasted to a 3-0 win over Championnat National 3 outfit Pontarlier and Rennes won 2-0 at Guingamp.
There were also victories for Le Havre, Reims and Toulouse while fifth-tier Saint-Priest, Rouen, Laval and Championnat National 2 side Bergerac Perigord all made it through to round of 32.