Record 13-time winners Juve will be favourites to reach a sixth final in seven years when they bid to complete the job in the return game in Turin next Tuesday.
Inter, who beat Juventus 2-0 last month in Serie A, have it all to do to keep their hopes of lifting a first Italian Cup since 2011 alive.
"It was an important match, the Serie A game showed Inter are far from an easy side to face," Juventus midfielder Adrien Rabiot told RAI Sport. "The tie isn't over yet, there's another leg to go and that will be even tougher than this one."
Holders Napoli host Atalanta in the second last-four first leg on Wednesday.
Inter made a flying start in the ninth minute, as Lautaro Martinez got in front of Matthijs de Ligt to meet Nicolo Barella's low cross, sweeping a right-footed finish into the net despite Gianluigi Buffon getting a hand to the shot. But Juventus were given a way back into the tie midway through the first half.
Juan Cuadrado, who was making a run into the box off the ball, was held by Ashley Young, with VAR deeming that the visitors should be awarded a penalty. Ronaldo did the rest, hammering the spot-kick into the roof of the net to score his 21st goal of the season.
Juventus completed the first-half turnaround in the 35th minute, as a terrible mix-up between Alessandro Bastoni and Inter goalkeeper Samir Handanovic allowed Ronaldo to slide in his second goal from a tight angle.
Inter, missing top-scorer Romelu Lukaku through suspension, should have equalised 11 minutes after half-time, but Alexis Sanchez's shot was brilliantly cleared off the line by Merih Demiral. The hosts kept pushing for an equaliser, with Martinez curling narrowly over after Buffon's smart save kept out Matteo Darmian from point-blank range.
Inter coach Antonio Conte threw on Christian Eriksen, who scored a late winner in the last eight against AC Milan, but the home side failed to create another clear-cut chance.
Standout matches today