The Bosnian midfielder struck a free kick on the stroke of half time, then netted a second half penalty after Cannavaro was given a second booking. The result gives Roma a five point cushion over Rafa Benitez's side.
Goran Pandev came in for Gonzalo Higuain, who was benched due to a thigh complaint. Christian Maggio returned after a month out, but Juan Zuniga was absent and is set to undergo knee surgery early next week. Giandomenico Mesto replaced the jet-lagged Pablo Armero after his international commitments for Colombia in midweek
Diego Armando Maradona's belated arrival was the highlight of the first ten minutes. The Argentina and Napoli legend was a guest of Roma owner James Pallotta.
The Giallorossi suffered a blow when Totti went off with a thigh injury on 33 minutes. Marco Borriello came on to replace the captain. Florenzi also caused a scare when he pulled up shortly after with a tight hamstring, but he was able to continue.
Napoli soaked up the pressure and should have hit the front on 35 minutes. Lorenzo Insigne unlocked Goran Pandev to leave the Macedonian one on one with De Sanctis. The goalkeeper got a hand to the shot, but still needed De Rossi to make a last ditch clearance off the line.
Borriello used his strength to cushion Kevin Strootman's long pass and set up Alessandro Florenzi, but the youngster snatched at his shot and dragged the ball wide. The visitors lost Miguel Angel Britos to a shoulder injury as a result of a challenge with Borriello.
Two minutes before the break, Gervinho went down under Raul Albiol right in front of the referee. The Ivorian's tumble wasn't convincing and play was ordered to continue. Strootman sent a stinging shot over the bar as the home side continued to press.
For all Roma's dominance, Napoli wasted another guilt edged chance right on half time. Insigne escaped from Maicon to sidefoot the ball underneath De Sanctis and off the post. Instead of bouncing back into play, the ball finished wide.
Napoli were made to rue that miss, as Roma took the lead with the last kick of the half. Gervinho was felled in full flight by substitute Cannavaro, who had only been on the field for a few minutes. Pjanic stepped up to curl a 20 yard free kick over the wall, with the ball swinging past Reina's outstretched glove on its way into the net.
The visitors started the second half brightly. Gokhan Inler saw a shot whistle just past the post, with the second half just four minutes old. The injury curse struck Roma again, when Gervinho suffered a thigh strain. The former Arsenal man consulted with Rudi Garcia on the touchline and briefly resumed the field. Five minutes later, Garcia changed his mind and made a second enforced change, with Adem Ljajic coming on.
De Rossi attempted a diving header, but the pace of the ball took him by surprise and Reina watched the effort go over the bar.
Marek Hamsik imposed himself on the game to shave the upright on the hour. At the other end, Florenzi was crowded out by the Napoli defence as he tried to get on the end of Maicon's pull back.
Napoli finally brought Higuain on, but Cannavaro conceded a penalty and was given his marching orders on 70 minutes. Florenzi, who had just been switched to a wide position, put a dangerous ball into the box and Cannavaro tugged at Borriello's shirt. Pjanic sent Reina the wrong way, as he buried the resulting spot kick into the top corner.
The visitors were now out of the reckoning. Ljajic could have added a third in stoppage time, had he not placed his shot straight at Reina.
AS Roma: De Sanctis; Maicon, Benatia, Castan, Dodò; Pjanic, De Rossi, Strootman; Florenzi, (Marquinho 81) Totti, (Borriello 33) Gervinho (Ljajic 58)
Napoli: Reina; Maggio, Albiol, Britos, (Cannavaro 44) Mesto; Inler, (Dzemaili 82) Behrami; Callejon, Hamsik, Insigne; Pandev (Higuain 68)
Goals: Pjanic 45 +3 (R) pen 71 (R)
Sent off: Cannavaro 70 (N)