The Giallorossi were made to work for the win but prevailed thanks to the intervention of the striker from the bench.
Maicon put the home side 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 halftime, 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.
Fiorentina 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 its 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 and he 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 itself back into the game before halftime. 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 Fiorentina 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.