Napoli substitute Manolo Gabbiadini converted a penalty with the last kick of the game to salvage a 3-3 draw at Fiorentina who were inspired by a superb display from Federico Bernardeschi.
Bernardeschi scored two goals and provided the third for Mauro Zarate as Fiorentina twice came from behind to lead 3-2 in a game which produced stunning goals, mistakes, drama and controversy.
In other games, second-placed AS Roma came from behind to beat Chievo 3-1 and Cagliari fought back from 3-1 down for a 4-3 win over Sassuolo, who played the second half with 10 men.
Roma’s win took them onto 38 points, four behind leaders Juventus who play AC Milan in the Italian Supercup in Doha on Friday. Napoli are third with 35, one ahead of Lazio.
Lorenzo Insigne gave Napoli a deserved lead when he beat Ciprian Tatarusanu with a vicious dipping shot from long range in the 25th minute.
Bernardeschi levelled seven minutes after the re-start with a free kick which went through the middle of the Napoli wall and caught Pepe Reina offguard.
Napoli went back in front when Fiorentina defender Nenad Tomovic failed to control a straightforward pass and let in Dries Mertens who scored his eighth league goal in three games with a clinical finish in the 68th minute.
One minute later, Bernardeschi collected the ball in midfield and unleashed a wicked long-range left-foot shot which bounced once and went in off the post.
The 22-year-old was in inspired form and chipped a delightful ball over the top of the Napoli defence into the path of Mauro Zarate, who met it first time and side-footed the ball past Reina with nine minutes left.
Fiorentina were on the point of celebrating a famous win until Carlos Salcedo clumsily tripped Mertens and Gabbiadini, who has been struggling for form, calmly slotted his spot kick into the bottom corner.
Roma suffered a fright when Jonathan de Guzman headed Chievo in front at the Stadio Olimpico but Stephen El Shaarawy curled home a free kick to level in first-half stoppage time to calm their nerves.
In the second half, Edin Dzeko tapped in his 13th goal of the season and substitute Diego Perotti converted a penalty to ground the Flying Donkeys, as Chievo are known.
Injury-ravaged Sassuolo’s topsy-turvy season took another twist at Cagliari.
Lorenzo Pellegrini put them 2-1 ahead in the 32nd minute but was sent off almost immediately afterwards for a shocking two-footed challenge. Nevertheless, Francesco Acerbi increased Sassuolo’s lead from a penalty just before the hour.
Things quickly began to go wrong, however, as Marco Borriello pulled one back, Diego Farias equalised with a deflected shot and then grabbed the winner for the Sardinians, with their last three goals all coming inside 14 dramatic minutes.
Cristiano Biraghi converted a stoppage-time penalty to give basement club Pescara a 1-1 draw at Palermo while Andrea Belotti scored his 13th goal of the season in Torino’s 1-0 win over Genoa.