Milan draw 4-4 with Udinese
Third-placed Lazio lost 2-1 to Lecce and champions Inter Milan, now 11 points adrift of Milan, won 2-1 at Catania thanks to Esteban Cambiasso's double to boost their outside hopes of a sixth successive scudetto given they have two games in hand.
Visitors Udinese took the lead on 35 minutes when Gokhan Inler hit the post and Antonio Di Natale, Serie A's joint top scorer with Cavani, netted the rebound.
Milan hit back just before the break when Zlatan Ibrahimovic crossed for the returning Alexandre Pato to tap in.
Udinese forward Alexis Sanchez, linked in the media with Inter, headed in at the near post after half-time and Di Natale scored again before an own goal by Mehdi Benatia and Pato's second from Antonio Cassano's assist put the hosts level.
German Denis thought he had won it for Udinese a minute from time but Ibrahimovic struck an injury-time equaliser after another sublime pass from new signing Cassano.
Napoli, beaten at Inter on Thursday, surged to second after Uruguay striker Cavani nodded in crosses from both flanks in the first half and netted a diving header after the break.
Juventus thought they had equalised at 1-0 in Naples when debutant Luca Toni, who signed from Genoa on Friday after Fabio Quagliarella's injury, forced the ball home but he was harshly penalised for a foul on goalkeeper Morgan De Sanctis.
A second straight loss means fifth-placed Juve, who again omitted Alessandro Del Piero at kick-off, lie nine behind Milan.
Hosts Lazio went behind in unfortunate fashion when Jeda's shot struck the post and hit goalkeeper Fernando Muslera on the back to fly into the net but an offside Stefano Mauri equalised.
Carlos Grossmuller gave Lecce the win in the 74th minute.
Inter, in seventh, laboured at Catania in Leonardo's second game in charge but two second-half goals by Cambiasso, the second a great header, cancelled out Alejandro Gomez's opener.
Sampdoria were gifted a 2-1 win over AS Roma when errors from defender Juan contributed to both goals but sixth-placed Palermo could not take advantage with a 0-0 draw at Chievo.
Fourth-placed Roma, who took the lead in the first period thanks to a powerful run and shot from Mirko Vucinic, looked comfortable until substitute Juan underhit a backpass and compatriot Julio Sergio could only bring down Angelo Palombo.
The goalkeeper was dismissed without protest and Nicola Pozzi blasted in the resulting penalty before Juan failed to clear a ball in the box and former Roma winger Stefano Guberti nipped in to score an 84th-minute winner.
The pressure on Fiorentina coach Sinisa Mihajlovic eased after they fought back for a 3-2 home win over lowly Brescia.
A string of Serie A sides are showing wild swings of inconsistency and Parma followed up Thursday's 4-1 win at Juve with a 2-1 home defeat by Cagliari while Genoa looked toothless without Toni in a 0-0 draw at Cesena.
Bottom side Bari lost 2-0 at home to improving Bologna.