Rolando Bianchi cancelled out Pablo Osvaldo's opener, before Erik Lamela's sublime strike settled matters. Federico Balzaretti was sent off late on for a second bookable offence. Torino now have an eight point buffer over the drop zone, while Roma move into the Europa League places.
The Granata hadn't won this meeting in front of their fans for over 22 years and lost 2-0 in Rome back in November. They lined up without injured pair Matteo Brighi and Valter Birsa, while Migjen Basha was suspended.
Ivan Piris and Osvaldo returned after bans, with the latter being the surprise inclusion for the Giallorossi. Daniele De Rossi was absent after limping out of Monday's Rome derby, while Francesco Totti was rested with the midweek Coppa Italia semi-final against Inter Milan in mind.
Roma opened the brighter of the two teams and spurned a couple of early chances. Osvaldo just missed getting his head to Simone Perrotta's cross, before Dodo crossed for Lamela to sweep the ball over from point blank range.
The visitors did take the lead halfway through the first period. The Torino defence allowed Balzaretti too much time to pick his spot, and his cross found Osvaldo, whose towering header looped over Jean-Francois Gillet and into the far corner of the net. It was the frontman's 12th goal of the season and his first since January.
Torino almost levelled five minutes later when Alessio Cerci's 30 yard free kick struck the post. Just past the half hour, the home side did equalise. Bianchi used his strength to hold off Nicolas Burdisso, before turning and lashing the ball home from eight yards. Balzaretti was lucky not to be dismissed before the break for carelessly throwing an arm out and joined Burdisso in the book. Both will miss next weekend's match with Pescara.
Totti was introduced early in the second half in place of the injured Miralem Pjanic. Cerci threatened for Torino once more from a dead ball position. This time, Maarten Stekelenburg touched his effort onto the crossbar.
Roma re-took the lead on the hour mark. Totti rolled the ball across for Lamela to cut inside and curl a beautiful shot over the despairing Gillet from the edge of the box.
Torino tried to peg Roma back once again, but Stekelenburg got down well to deny a Mario Santana snapshot.
Totti continued to be the difference maker. Gillet had to fly across goal to palm a vicious free-kick away from the top corner to deny the Roma talisman. With ten minutes to go, Roma gave Torino a way back into the match after Balzaretti foolishly collected a second yellow for raising an elbow into Cerci's neck.
Despite going a man down, Roma almost added a third. Osvaldo crossed for Florenzi, but the substitute didn't have the legs to stretch and force the ball over the line.
In the dying moments, Florenzi cleared off the line after Danilo D'Ambrosio drove a dangerous ball across the face of goal. Jonathas then wasted a free header deep in stoppage time, as Roma held on for three vital points.
Torino: Gillet; Darmian, Ogbonna, Glik, Masiello; Gazzi, Vives; Cerci, Meggiorini (Barreto 67), Bianchi (Jonathas 76), Santana (D'Ambrosio 67)
AS Roma: Stekelenburg; Piris, Burdisso, Castan, Balzaretti; Pjanic (Totti 54), Bradley, Perrotta (Marquinho 77); Lamela, Osvaldo, Dodò (Florenzi 63)
Goals: Osvaldo 22 (R) Bianchi 31 (T) Lamela 60 (R)
Sent off: Balzaretti 80 (R)