Former Roma defender Benatia scored the only goal following a corner from another ex-Giallorossi star Miralem Pjanic, ensuring Juve stayed one point behind Napoli, who beat Sampdoria 3-2 at the Stadio San Paolo earlier on Saturday.
Roma, meanwhile, sit a further six points back and have now lost to each of Serie A's top three sides, though they do possess a game in hand which, if won, would move them ahead of third-placed Inter.
Juve's defence rarely looked like being breached as Edin Dzeko's difficulties in front of goal continued - after a prolific start to the season, the Bosnia-Herzegovina international has now scored just once in his last 11 Serie A matches.
Gonzalo Higuain provided a stark contrast to Dzeko with his energetic approach, but he too was unable to notch and ultimately it was centre-back Benatia who proved the difference.
Eusebio Di Francesco's side made a late push with the introduction of Patrik Schick– who saw a pre-season move to Juve fall through due to a failed medical before joining Roma – but the Czech Republic international was unable to beat Wojciech Szczesny, who was also facing his former club, in a stoppage-time one-on-one.
Paulo Dybala returned to the bench despite starting and scoring in the midweek Coppa Italia victory over Genoa, but Juve still looked sharp in his absence with Sami Khedira and Mario Mandzukic both having early sights at goal.
Roma looked comfortable in possession but Juve's direct approach reaped greater rewards, Higuain nodding wide before being denied a one-on-one opportunity by a well-judged tackle from Federico Fazio.
And from the resultant 18th-minute corner, the hosts took the lead. Alisson reacted well to keep out Giorgio Chiellini's header and push Benatia's follow-up against the crossbar, but he was unable to stop the Morocco international finding the net at the second attempt.
The energetic Higuain had a claim for a penalty ignored when he went down under a challenge from Alisson, and Roma should have equalised before the half-hour mark.
Dzeko released Diego Perotti down the left and the Argentine raced into the box to square for Stephan El Shaarawy, who was unable to find a way past Szczesny from just 10 yards out.
Roma struggled to create further openings after the break and should have been two behind when Khedira played Higuain in at the end of a lovely move, only for the striker to lift his effort over Alisson and the crossbar.
After Alisson stopped Blaise Matuidi steering Mandzukic's cross home, Di Francesco sent on Schick in place of El Shaarawy in the 67th minute and a seemingly galvanised Dzeko fired high of the top-right corner moments later.
Matuidi appeared to pull a muscle when shooting and had to be replaced by Federico Bernardeschi, and matters nearly got worse for the hosts when Alessandro Florenzi made the most of static defending to connect with Daniele De Rossi's throughball, though his flicked effort came back off the bar.
Szczesny then denied late Roma substitute Cengiz Under and, after Pjanic struck the bar at the other end as part of a frantic finish, the keeper came out on top against Schick as Juve clung on to make it six wins from seven in all competitions, continuing Roma's seven-year wait for an away victory over the champions.
Key Opta Stats:
- Juventus have now kept eight clean sheets in a row in all competitions, their longest streak since February 2016.
- Roma have not recouped a single point from a trailing situation in this season's Serie A.
- Each of the last four goals Roma have conceded in the league were from a set piece.
- Seven of the 14 shots Roma attempted came from the 80th minute onwards.
- Roma have hit the woodwork 14 times in the current Serie A, at least three more times than any other team.
- Giorgio Chiellini played his 350th Serie A game (313 for Juventus).