The Giallorossi were made to work for the win but prevailed thanks to the intervention of the striker from the bench
Maicon put the hosts into the lead in the seventh minute after Gervinho - who was brilliant at the Stadio Olimpico - and Alessandro Florenzi had worked the ball into the six-yard box.
A Juan Vargas strike made it 1-1 before half-time, before the Giallorossi saw Miralem Pjanic sent off for two yellow cards late on, with the game seemingly heading for a draw.
But drama was to follow, with Destro introduced to the action and making the most telling of contributions with a late strike.
The home side saw Miralem Pjanic sent off late on for two bookable offences, but Roma hung on to move within three points of leaders Juventus at the top of Serie A.
It was the visitors who engineered the first opening of the game, when Vargas forced a good save from Morgan de Sanctis with a fierce drive from the edge of the area on three minutes.
Roma duly responded with an effort of their own, as Kevin Strootman let fly with a 35-yard shot that was comfortably saved by Neto.
The Giallorossi looked to exploit space down both flanks and a cross from Gervinho found Maicon on seven minutes, who opened the scoring with a simple tap-in.
Alessandro Florenzi then saw an effort turned behind by Neto, before Daniele De Rossi's header from the resulting corner was brilliantly saved by the Brazilian goalkeeper.
But with Roma turning the screw, Fiorentina hauled themselves back into the game before half-time. Nenad Tomovic cut inside the area and pulled the ball back for Vargas, and the winger dispatched a fine effort into the top corner.
However, the goal only appeared to spur the home side on and the visitors again had Neto to thank for saving efforts from Gervinho and Adem Ljajic in the second half.
Destro was then brought on as Roma searched for a winner and the striker delivered with a tap-in from another Gervinho cross, to make it 2-1.
The Giallorossi were reduced to 10 men late on following Pjanic's sending off after picking up two yellow cards, but Rudi Garcia's men did enough to see the game out and return to winning ways.