Paulo Dybala made way for Gonzalo Higuain, who has been coming off the bench in the last two matches, but Cristiano Ronaldo started up top while Gianluigi Buffon was given a run in goal.
Roma were more adventurous from the onet, but Juve went ahead after 26 minutes when Higuain released Ronaldo down the left and the Portuguese forward drilled a low finish across Pau Lopez.
A quick breakaway from the hosts allowed Rodrigo Bentancur and Douglas Costa to combine before the Uruguayan drifted into the area for a smart finish seven minutes to the break.
Danilo, who came on as a first-half substitute in Sunday's 2-1 win over Parma in the league, was stretched off injured 41 minutes in and had his spot taken by Juan Cuadrado.
This just further upped the home side's intensity on the stroke of halftime as Leonardo Bonucci found space in the six-yard area to head home Costa's cross from a short corner.
A lifeline however arrived for the visitors five minutes into the second half when Cengiz Under's strike crashed in off Buffon and into the net after hitting the underside of the crossbar.
Lopez kept Juventus from further increasing their tally after 63 minutes with a superb stop with his feet following a shot from Higuain.
Roma continued pushing to get back in the game, but the defending Serie A champions managed to see out the match to progress to the semi-finals.