Jose Callejon's top-notch volley was cancelled out by Giuseppe Rossi's penalty, but Dries Mertens notched a terrific first-half strike, and Vincenzo Montella's side was unable to equalize.
The second half was 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 its 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 its 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 from the spot, sending Pepe Reina the wrong way to equalize.
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 post.
This allowed Rafa Benitez's side to edge back into the lead, as Mertens struck an effort into the far corner past Neto to send the Partenopei in at the break a goal to the good.
The second half was significantly more physical 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 offenses.
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 second yellow card, both earned for diving.
Benitez's men stay second in Serie A, level on points with Juventus and two points behind the Giallorossi, while Hellas Verona overtook Fiorentina, which slips down to sixth.