Substitute Lorenzo Pellegrini lashed in the opener in 76th minute of a ill-tempered, scrappy encounter at the Stadio Olimpico - which featured 13 bookings and two red cards - before Romelu Lukaku capped the win deep in stoppage time.
Jose Mourinho's Roma moved into sixth spot above Napoli, whose star striker Victor Osimhen was one of the two players sent off on the day he signed a long-awaited contract extension until 2026.
"We needed to make it a happy Christmas for the fans. We played very well eleven against eleven, had two great chances early on and were always in control," said Mourinho to 'DAZN'.
Roma travel to Juve next weekend and will be boosted by a deserved win which took them to within three points of high-flying Bologna, who will be fourth at Christmas after beating Atalanta 1-0.