Roma, who were reduced to nine players after Daniele De Rossi and Leandro Castan, were dismissed in the closing stages, saw their 19-match unbeaten run snapped by Juventus who notched up 10 wins in a row.
Arturo Vidal opened scoring for the host in the first half, and Leonardo Bonucci doubled their lead before Mirko Vucinic wrapped up the win from the spot.
Juventus head coach Antonio Conte said his side prepared in the right way for the clash.
“Roma are a very dangerous side with great quality and strong investments,” he said. “Today if Juve had not prepared the game in the right way, we would’ve had a real bellyache. Let’s just say an Italian coach did well to prepare the tactics.”
His Roma counterpart Roma Rudi Garcia blamed inefficiency on his side’s loss.
“In my view it is a problem of efficiency. Neither side had that many chances, so you’ve got to take them when they arrive,” he said.
He also blamed bad luck for his side’s loss.
“I have no doubt that in the first half we played the right game. In order to win you also need luck in important moments and tonight the luck was more with Juventus than with us,” he said.
Vidal found the breakthrough with Juve’s first meaningful attack after 17 minutes at the Juventus Stadium, squeezing his effort past Morgan De Sanctis from a tight angle.
Juve made it 2-0 shortly after the break when Leonardo Bonucci slid in to side-foot home from Andrea Pirlo’s superb whipped delivery.
The game practically ended when De Rossi and Castan were sent off in the 75th and 76th minutes, with the former receiving his marching orders for a late tackle on Giorgio Chiellini and the latter being dismissed for handball on the goalline.
Ex-Roma striker Mirko Vucinic rubbed salt in the visitors’ wounds by converting the resulting penalty, as Conte’s men took an eight-point lead over Roma at the top of the standings.
Gonzalo Rodriguez broke the deadlock after 66 minutes, much to the relief of the home faithful.
Vincenzo Montella’s side were dealt a blow with just under 20 minutes remaining, however, as Giuseppe Rossi was withdrawn from the action following a tackle with Leandro Rinaudo.
In Sunday’s other fixture, Chievo and Cagliari played out a 0-0 draw at Stadio Marc’Antonio Bentegodi.