Two years after reviving Real’s bid for a 10th title, captain Sergio Ramos struck the opener after just 15 minutes at a packed San Siro.
But the match was pushed into extra time when Yannick Carrasco came off the bench to level on 79 minutes — the Belgian rushing towards the touchlines to kiss his partner in celebration.
After two scoreless periods of extra time the match went to penalties, and when defender Juanfran’s effort blasted off the bottom of Keylor Navas’s upright Ronaldo stepped up to secure the trophy for the second time in three years. In 2014, Atletico lost 4-1 in extra time after Ramos headed a late leveller at the death.
It means Real coach Zinedine Zidane has joined an elite club of players — including, notably, Johan Cruyff, Carlo Ancelotti and Pep Guardiola — to have also won the title as a coach.
Man-of-the-match Ramos said Zidane’s arrival in January following the sacking of Rafael Benitez was “really important for us”.
“He has a great relationship with the players. We’ll be celebrating this with him!” said Ramos.
The normally reserved Frenchman, meanwhile, was overjoyed at lifting European club football’s biggest prize.
“I was given the chance to come to this amazing club, and then to coach it. I have a phenomenal team and great players who are also talented, and it was together we achieved what we did tonight,” said Zidane.
Real, inaugural winners of the competition in 1956, claimed their 10th title two years ago in Lisbon when a late Ramos leveller pushed the match into extra-time.
Atletico coach Diego Simeone had pledged his side, two-time Europa League winners in 2010 and 2012, would end their wait to finally win Europe’s premier competition.
But it took only six minutes for Real to start knocking on the door when Jan Oblak had to produce a point-blank save from Karim Benzema after Gareth Bale’s back-header.
– ‘Penalties are a lottery’ –
When Ramos opened the scoring on the quarter hour, Atletico’s hopes, and morale, plummeted.
“We started the game badly,” admitted Simeone, who hinted he could now consider his future at the club.
“I think I could start thinking about my future,” Simeone said cryptically. “It puts a lot of years on you.”
Before half-time Atletico were restricted to an Antoine Griezmann shot that fizzed wide of the upright, but they were handed a lifeline seconds after the restart when Pepe barged into Torres from behind.
English referee Mark Clattenburg had no hesitation pointing to the spot but Griezmann, with seven goals in the competition this season, smashed his effort off the underside of the crossbar.
After Bale skewed an effort wide, Atletico got back on their feet to see Saul Niguez turn on Carrasco’s cross and send a half-volley wide of the post.
It prompted Simeone into some frantic arm-waving, but instead fans were left breathing huge sighs of relief as Real piled on the pressure.
At the end, Simeone said: “What really hurts me is to see the hurt of the people who’ve paid to come here -– I feel a bit responsible that I wasn’t able to give them what they wanted. That’s what really hurts.”
Luka Modric sent Benzema clear but he found the chest of onrushing Oblak with the goal at his mercy.
Modric was involved again when Ronaldo shot straight at the keeper from 25 yards, and Atletico survived a huge scare when Oblak stopped Ronaldo’s effort, then had Stefan Savic to thank for clearing Bale’s follow-up off the line.
The match was turned on its head moments later when Carrasco muscled his way through Real’s central defence to smash Juanfran’s perfectly-weighted cross past Navas and send the red half of the stadium wild.
But in the end penalty misses from Juanfran and Griezmann left Atletico coming up short.