Maurizio Sarri’s side struck double within the opening ten minutes, as Merih Demiral met Paulo Dybala’s free-kick before Dybala then attained a penalty that Cristiano Ronaldo duly converted.
Roma responded within the last half through Diego Perotti’s spot-kick.
Antonio Conte’s inter were control to a 1-1 draw at home to Atalanta on Saturday.
Meanwhile, third-placed Lazio recorded a tenth consecutive Serie A win against Napoli to sit six points behind Juventus with a game in hand.
Ronaldo’s ninth goal in seven games appeared to have place Juventus in firm management in an exceedingly first half overshadowed by a serious-looking injury to 20-year-old Roma midfielder Nicolo Zaniolo, following a challenge by Matthijs DE Ligt.
But Paulo Fonseca’s hosts made a reaction after the interval, striker Edin Dzeko touching the post moments before a video assistant referee review found Sandro to have handled amid a goalmouth scramble.
With the Stadio Olimpico roaring Roma on, Juve’s Gonzalo Higuain had a goal disallowed for offsides whereas Aleksandar Kolarov missed a superb headed chance to equalise.
Juve held on despite late pressure to record a fourth sequential league win since suffering a primary defeat of the season against Lazio in December.