Lazio and Napoli closed the gap on leaders AC Milan - who lost 1-0 at home to Roma on Saturday - to just three points with victories on Sunday while Juventus failed to capitalise on the league leader's loss with a 1-1 draw at Chievo.
Lazio edged out Udinese 3-2 in a thrilling match decided by Christian Zapata's own goal two minutes from time. Napoli looked to be heading for a frustrating stalemate until Edinson Cavani struck deep into injury time to thrash a stunning winner from 25 yards into the top corner.
Juventus, on the other hand, were the victims of a late equaliser as Sergio Pellissier popped up at the back post to stroke home in time added on. Those results left Napoli second ahead of Lazio on goal difference with Juventus two points further back.
Napoli coach Walter Mazzarri showered his team with praise as the Azzurri ended the year on a high note. "My players did a great job despite their fatigue," said Mazzarri. "We knew it was going to be a tough game but the most important thing was to win."
The triumph capped off a great week for Napoli after Mazzarri's men beat Steaua Bucharest 1-0 in midweek, courtesy of another late Cavani match winner, to progress to the last 32 of the UEFA Europa League.
"To score another late goal gives the team another boost in confidence," said Mazzarri. "We could have secured the points earlier as we wasted a few chances but the important thing is that this Napoli side never gives up and fights until the end. Now we close the year on a high and given our position in Serie A, I can only congratulate my players for a superb effort."
Zapata hands Lazio win
The game of the day came in Rome where Lazio had taken the lead twice through Hernanes and Giuseppe Biava but were pegged back on each occasion by Alexis Sanchez and then German Denis. But Zapata inadvertently headed a corner past his own goalkeeper under pressure from Libor Kozak to give the home fans a pre-Christmas treat.
Lazio were off to a dream start as Brazilian Hernanes gave them the lead after just two minutes, squeezing a shot from 20 yards inside the post from Tommaso Rocchi's pass, although Udinese goalkeeper Samir Handanovic was perhaps taken by surprise. Udinese dominated for large spells thereafter but Kwadwo Asamoah and Antonio Di Natale shot wide while Pablo Armero missed an open goal. Lazio struck the woodwork on 25 minutes as Hernanes beat Handanovic for the second time but his shot crashed back off the post.
However, on 49 minutes the visitors were level as Lazio's defence went to sleep. Di Natale crossed from the right and Sanchez, one of the smallest players on the pitch, ghosted into the six yard box to head home unmarked. And yet three minutes later Lazio were back in front as Biava volleyed home from close range after Andre Dias headed a corner back into the danger area.
The lead did not last long, though, as Di Natale crossed from the right again and substitute German Denis headed home from 15 yards with Lazio goalkeeper Fernando Muslera wrong-footed. However, Zapata's unfortunate own goal at 88 minutes handed the hosts the points.
Drama in Napoli and Verona
Napoli had toiled throughout the game without enjoying much success but once again they scored in the "Mazzarri zone", so dubbed because Walter Mazzarri's team seem to always score in the last 15 minutes of matches. Cavani struck just moments after Gianluca Gava saved Napoli by clearing Daniele Corvia's shot off the line.
There was late drama in Verona too. Juventus were handed a let-off after Giorgio Chiellini felled Davide Moscardelli in the area, with goalkeeper Marco Storari saving Michele Marcolini's penalty-kick on 15 minutes.
Chievo were made to pay when Fabio Quagliarella scored a brilliant acrobatic overhead volley on 31 minutes. Juventus hit the woodwork twice through Frederik Sorensen and Milos Krasic but had Manuel Giandonato sent off for bringing down Frenchman Kevin Constant as he bore down on goal. Juventus had to hang on for 40 minutes but couldn't quite manage it as Pellissier popped up late on to snatch the draw.
Elsewhere in Italy, Catania defeated Brescia 1-0. The result pulled the hosts towards the midtable while Brescia sit precariously above the relegation zone.
Parma and Bologna could manage no more than a goalless draw today. The result keeps the teams' in the bottom half of the table, uncomfortably close to the rash of relegation threatened teams.
The evening game, the derby between Sampdoria and Genoa, has been postponed due to bad weather in Liguria.