Ronaldo put Real ahead with a first-time finish from 16 yards before Mario Mandzukic equalised from just inside the area with a sensational overhead kick beyond Keylor Navas.
Real took control after the interval, Brazilian midfielder Casemiro's deflected shot restoring the lead before Ronaldo sealed victory for Zinedine Zidane's side after poking home from close range following Luka Modric's cross.
Juventus played the last six minutes with 10 men after substitute Juan Cuadrado was booked twice inside 18 minutes, before substitute Marco Asensio hit the fourth after Marcelo's fine pass.
Zidane has now won back-to-back Champions Leagues - as well as this season's La Liga title - since he took charge of Real in January 2016.
Italian champions Juventus have lost five Champions League finals since they last won the competition in 1996.
Real forward Gareth Bale came on as a 77th-minute substitute in his home city after recovering from a calf injury.
BBC