An own-goal in stoppage time allowed Milan to nab a 2-1 win at home against Fiorentina on Sunday. The team remains eight points adrift of Napoli, who beat Udinese 3-2 on Saturday.
The other four teams in the top six were playing against each other in the final round before the Italian league pauses until January 4 for the World Cup and the traditional winter break.
Juventus beat Lazio 3-0 to move above the capital side into third, 10 points behind Napoli. Lazio and Inter Milan are a point further back after the Nerazzurri came from behind to win 3-2 at sixth-placed Atalanta.
It was the sixth consecutive league win without conceding a goal for Juventus, who have soared back up the table after a dreadful start to the season.
Juventus broke the deadlock two minutes from halftime in Turin when Adrien Rabiot won the ball in midfield and picked out Moise Kean, who raced forward before lifting the ball over advancing Lazio goalkeeper Ivan Provedel.
Kean doubled his tally in the 54th minute by slotting into an empty net after Provedel parried Filip Kostic's effort into his path.
Arkadiusz Milik sealed the match in the final minute when he tapped home a low cross into the area from Federico Chiesa, who has only recently returned from a lengthy injury layoff.
An exceptional performance from Edin Dzeko helped Inter secure a victory over one of its closest rivals for the first time this season.
Ademola Lookman's penalty had given Atalanta the lead, but Dzeko netted twice, either side of halftime, and Jose Luis Palomino's own-goal secured the win for Inter.
Palomino headed in a corner at the right end in the 77th to set up a tense finale.
It was a fourth defeat in five matches for Atalanta.
Fiorentina defender Nikola Milenkovic turned into his own net in stoppage time as Milan snatched what could prove a crucial win in its title defence.
Rafael Leao netted the opener after less than 90 seconds but Milan appeared to be heading for a second straight draw following Antonin Barak's 28th-minute equaliser.
Another stoppage-time goal helped Roma snatch a 1-1 draw against Torino.
Andrea Belotti had seen a penalty kick come off the post for Roma moments earlier, while Paulo Dybala also hit the woodwork just before Nemanja Matic finally scored the equaliser.
Roma coach Jose Mourinho was sent off for dissent late on.
At the other end of the table, Spezia won 2-1 at bottom club Hellas Verona to move six points clear of the relegation zone, and Monza beat Salernitana 3-0.
―With AAP.