The visitors went ahead via a Jose Callejon volley before Giuseppe Rossi brought the hosts level, but the Viola could not counter Dries Mertens' goal
Jose Callejon's top-notch volley was cancelled out by Giuseppe Rossi, but the Vincenzo Montella's side were unable to score a second to equalise from Dries Mertens' first-half strike.
The second half was a less goal-ridden affair and full of bookings, with Partenopei defender Christian Maggio seeing red for a second yellow before Viola attacker Juan Cuadrado suffered the same fate in stoppage-time.
Fiorentina, looking for their fourth victory in a row, conceded first when Gonzalo Higuain's cross was met sweetly by the right foot of Callejon, who lashed in to give the visitors a 12th-minute lead.
The home side wrestled their way back into the match, though, when Stefan savic was pushed over in the 18-yard box by Federico Fernandez, and Rossi made no mistake sending Pepe Reina the wrong way to equalise.
Juan Cuadrado looked a danger all game long when dribbling at Napoli defenders and he almost put Montella's men into the lead, but his effort cannoned off the crossbar and did not bounce in.
This allowed Rafa Benitez's side to edge back into the lead, as Mertens struck an effort past Neto to send the Partenopei in at the break a goal to the good.
The second half was significantly more physical and battling and the tempo was stalled as a result. Yellow cards were free-flowing as the likes of Maggio, Borja Valero, Raul Albiol and Cuadrado picked up cautions for a variety of offences.
Napoli suffered a potential setback with 10 minutes to go when Maggio was sent to the stands for impeding Viola substitute Ryder Matos.
But the hosts failed to take advantage of the extra man and even lost one of their own in stoppage-time when Cuadrado saw a red card which, though undeserved, fooled the referee as a result of his diving earlier in the game.
Benitez's men stay second in Serie A, level on points with Juventus and two points behind the Giallorossi, while Hellas Verona overtook Fiorentina, who slip down to sixth.