Real Madrid made much harder work of progressing to the Champions League semi-finals than was necessary following their 3-0 win in Turin last week.
Zinedine Zidane’s side found themselves behind inside two minutes when former Atletico Madrid forward Mario Mandzukic put Juventus in front.
The Italian Serie A leaders doubled their lead before half-time when the same player powerfully headed past Kaylor Navas at his near post.
AS Roma shocked the world 24 hours earlier with a 3-0 second leg victory over Barcelona that sent them through on away goals and it appeared to be the inspiration that Max Allegri’s side needed.
Real Madrid were a shadow of the team that were 3-0 winners a week ago at the Juventus Stadium and found themselves on the receiving end of that scoreline on the hour when Navas spilled a tame effort into the path of Blaise Matuidi who simply tapped home to level the aggregate score.
With extra time looming Juventus sat back for the final 10 minutes, allowing Real Madrid onto them. This would be their undoing as Lucas Vazquez was tripped up inside the penalty area by Medhi Benatia in stoppage time.
There was a five-minute hold up before the penalty could be taken as Gianluigi Buffon was sent off for barging into referee Michael Oliver on more than one occasion. Juventus players continued to argue with the official before Wojciech Szczesny was brought on.
In the 97th minute Ronaldo smashed home the penalty to send Real Madrid into their eight consecutive Champions League semi-final, with a 4-3 aggregate victory. In the process, the Portuguese superstar extended his record run to 11 consecutive matches in the competition with at least one goal.