Cristiano Ronaldo scored twice as champions Juventus bounced back from their first Serie A defeat of the season by beating Udinese 4-1 on January 3 to move up to fifth place.
The Milan clubs are top of the Italian league with Juventus 10 points adrift of the summit having played a game less.
Leaders AC Milan stayed one point ahead of Inter with a 2-0 win over midtable Benevento despite playing an hour a man down.
City rivals Inter crushed lowly Crotone 6-2 with Lautaro Martinez bagging his first hat-trick for the club.
But Milan restored their advantage thanks to a Franck Kessie penalty on 15 minutes and Rafael Leao’s terrific curling strike from a tight angle shortly after half-time.
Sandro Tonali’s sending off after 33 minutes for a high tackle on Artur Ionita did not hold back Stefano Pioli’s side.
Gianluigi Donnarumma was solid in the Milan goal while Gianluca Caprari dragged a penalty wide on the hour.
Ronaldo once again proved decisive for Juventus by scoring a goal in each half to bring his league-leading tally to 14 this campaign and teeing up Federico Chiesa after the break.
Paulo Dybala added the fourth deep into injury time as Andrea Pirlo’s side moved on from their shock 3-0 loss to Fiorentina last time out.
Pirlo said: “It wasn’t the best Juventus because we were coming off a bad defeat, we were a bit fearful at the beginning. Slowly we grew and in the second half we did better.”
At the San Siro, Martinez and Romelu Lukaku combined to devastating effect for Inter who have now won eight league games in a row.
The strike duo were involved in five goals although midfielder Arturo Vidal was hauled off at half-time after conceding a penalty in a woeful display.
Antonio Conte’s side had been pegged back 2-2 at the break with Niccolo Zanellato scoring first with a 12th-minute header for the rock bottom Calabrians with the worst attack in the league.
But Martinez picked up a Lukaku cross to pull the hosts level eight minutes later.
Martinez had a role in Inter’s second just after half an hour when Crotone defender Luca Marrone turned the ball into his own net under pressure from the Argentina forward.
Vladimir Golemic put the sides level six minutes later after Vidal fouled Arkadiusz Reca, with a furious Conte replacing the Chilean with Stefano Sensi at the break.
Roma stay third
Martinez restored the lead for Inter before the hour connecting with a Marcelo Brozovic through ball following a Lukaku back-heel, and headed in his third with 12 minutes to go off a rebound.
Lukaku blasted in his 50th goal for Inter after 64 minutes but limped off after taking a knock to his right thigh 10 minutes later, before Achraf Hakimi rounded out the win with three minutes to go.
Inter is targeting their first Serie A title since 2010 with their European campaign over this season.
Roma held third place, six points behind Inter, with captain Edin Dzeko scoring with a quarter of an hour to go in a 1-0 win in the rain over former Roma coach Claudio Ranieri’s Sampdoria.
The capital side are ahead of Napoli who swept past Cagliari 4-1 with Piotr Zielinski scoring twice and Hirving Lozano and Lorenzo Insigne also on target late, the latter from the penalty spot.
In a clash of European rivals, Atalanta whipped Sassuolo 5-1 with Colombian Duvan Zapata scoring twice.
The Bergamo side were again playing without captain Papu Gomez who has fallen out with coach Gian Piero Gasperini.
Zapata and Matteo Pessina scored in the first half with the Colombian adding a second just after the break with Robin Gosens and Luis Muriel compounding the rout before Vlad Chiriches pulled a goal back.
Sassuolo are sixth one point ahead of Atalanta who have played a game less.