Rudi Garcia's team had been held to four consecutive draws in the league prior to the visit of Vincenzo Montella's men, but ended that run on Sunday.
Roma took the lead as early as the seventh minute when Maicon notched his first goal of the season, but Juan Manuel Vargas levelled just before the half-hour mark.
The winning goal arrived with 23 minutes left to play as Mattia Destro found the net following good work from Gervinho, and the hosts held on despite Miralem Pjanic receiving a late red card.
Inter and Parma played out a thrilling 3-3 draw at San Siro, the former claiming a solitary point for the third Serie A match in succession.
Rodrigo Palacio cancelled out Nicola Sansone's well-taken 11th-minute opener, but Marco Parolo ensured Parma took a 2-1 lead into half-time following a dreadful mistake by the hosts' goalkeeper Samir Handanovic.
Goals in quick succession from Palacio and Fredy Guarin gave Inter the lead for the first time early in the second period, before Sansone grabbed his second in the 59th minute, leaving Inter four points behind third-placed Napoli.
Hellas Verona recorded a first win in four as goals in the final eight minutes from Juan Ignacio Gomez and Jorginho saw them come from behind and register a 2-1 win over Atalanta at Stadio Marc'Antonio Bentegodi.
Lazio's winless league run stretched to six matches as Kamil Glik's 19th-minute goal gave Torino a 1-0 home win.
As a result, Torino leapt above Vladimir Petkovic's men and into seventh.
Cagliari also moved above Lazio in the table as two late goals from Marco Sau secured a 2-1 victory over visitors Genoa, who had Thomas Manfredini sent off just before half-time.
Sinisa Mihajlovic's Sampdoria climbed out of the relegation zone with a 2-0 win over Catania, while Chievo are two points clear of the bottom three after beating fellow strugglers Sassuolo 1-0 in foggy conditions.
Get the best features, fun and footballing frolics straight to your inbox every week.
Thank you for signing up to Four Four Two. You will receive a verification email shortly.
There was a problem. Please refresh the page and try again.