After Dortmund had made, but spurned, several good chances, particularly in a one-sided first half, Realturned the game round with goals by Dani Carvajal and Vinicius Jr after 74 and 83 minutes to delight their fans.
It gave them the trophy for the sixth time in 11 seasons, matching the run of the team that started Real's love affair with the European Cup, having won the first five editions of the continent's elite competition from 1956 and another in 1966.
It was also a record-extending fifth triumph as a coach for Carlo Ancelotti, who also won it twice as a player with AC Milan.
It was a performance typical of Real not only this season but for the last few years, as they did almost nothing for an hour but absorbed Dortmund’s punches then showed their clinical touch in front of goal.
The Germans had a dream first half in every aspect other than scoring.
Their first good chance came after 21 minutes when Karim Adeyemi broke the offside trap but went too wide when rounding goalkeeper Thibaut Courtois and was smothered.
Then came a flurry of further opportunities as Niclas Fuellkrug hit the post and low shots by Julian Brandt and Marcel Sabitzer were saved by Courtois, making only his fifth appearance of an injury-hit season.
RELENTLESS NOISE
Dortmund had been attacking towards their own fans who, revelling in their team's first Champions League final since 2013 and only their third ever, did their best to reproduce the yellow wall from their Westfalenstadion with relentless noise and unified bouncing that shook the stadium to its foundations.
At the other end, with precious little to get excited about, it felt like another day at the office for the Madrid supporters, who have been gorging at the top table for a decade and have become used to their team absorbing pressure.
Madrid looked livelier from the start in the second half, with Dortmund keeper Gregor Kobel saving a Toni Kroos free kick and Carvajal glancing a header just over.
The German side, however, soon took control again and Courtois was in action to keep out a diving header by Fuellkrug.
To the surprise of nobody in the stadium though, Dortmund paid a heavy price for failing to convert their chances as Madrid scored the opener with a simple goal as 5ft 8 ins (172cm) Carvajal rose to meet a Kroos corner and power home a header.
The assist was a fitting way for Germany international midfielder Kroos to mark his final game for the club while he Carvajal, Nacho and Luka Modric equalled Real’s Francisco Gento’s record of six titles from their first era of dominance.
Madrid took charge from then on and got the second goal when Dortmund lost the ball on the edge of their own box, Jude Bellingham fed Vinicius Jr in acres of space and the Brazilian fired the ball home.
Dortmund finally found the net three minutes from time but Fuellkrug’s header was ruled out for offside and, though their incredible fans continued to sing, it was more importantly the same old song again for champions Real in the European Cup.