Wilfried Singo was sent off for a harsh second booking early in the first half and the hosts quickly pounced through a Henrikh Mkhitaryan strike and Jordan Veretout penalty.
Lorenzo Pellegrini struck a third in the second half, before Andrea Belotti pulled one back to spark a late surge from the visitors.
The result leaves Roma level with third-placed Juventus on 24 points but behind the champions on goal difference, while Torino remain second-bottom on just six points, with one league victory all season.
Marco Giampaolo made five changes to his side as he injected more youth into the line-up, but any hope of the visitors springing an upset was extinguished after just 14 minutes when 19-year-old Singo was sent off for a challenge on Leonardo Spinazzola.
Roma required little more than 10 minutes to break through their depleted opponents as Mkhitaryan rattled a shot in off the post from inside the area.
Torino were unhappy about a potential foul from Gianluca Mancini in the build-up that left Andrea Belotti hobbling off the pitch, but there was no VAR intervention and the hosts came close to a second when Leonardo Spinazzola’s volley faded wide of the far post.
The Giallorossi eventually doubled their lead when Bremer clipped Edin Dzeko’s ankle in the box, and Veretout dispatched the resulting spot kick into the bottom corner.
Toro mustered a response after the break as substitute Simone Edera blasted a long-range effort off the bar, but Roma put the result beyond doubt when Pellegrini was left with time and space in the box to fire home his side’s third.
The hosts had themselves to blame for allowing the Granata to pull one back when Pau Lopez spilled a shot and several defenders got in a tangle trying to clear the rebound before Belotti stole in and shot into an empty net.
The goal instilled some belief in an unlikely comeback from the visitors as substitute Federico Bonazzoli’s shot fizzed just past the post and Bremer glanced a header wide.