Dortmund were made to pay for missed chances as Real Madrid left it late to claim their 15th Champions League triumph at Wembley.
Dani Carvajal’s glancing header on 74 minutes and a Vinicius Jr strike nine minutes later proved the difference on a night when Madrid failed to hit their heights.
Dortmund enjoyed the best of the first hour and Niclas Fullkrug hot the inside of the post while Thibaut Courtois – playing his first game in the competition this season – had to deny Karim Adeyemi and Fullkrug while Carvajal denied Karemi after he had rounded the Belgian keeper.
The final whistle ensured a record sixth winner’s medal for Toni Kroos, on his final club game, along with Carvajal, Luka Modric and Nacho.
2024 CHAMPIONS: Real Madrid 🏆#UCLfinal pic.twitter.com/msoVjUWhRy
— UEFA Champions League (@ChampionsLeague) June 1, 2024
The pre-match atmosphere had built to a crescendo before kick-off but less than 25 seconds later a series of pitch invaders made it onto the field.
Dortmund’s Marcel Sabitzer wrestled the third to the floor to cheers from the crowd but the interruption certainly took some of the edge of proceedings when play eventually resumed.
There was nothing in the way of action in the final third until Federico Valverde linked up well with Carvajal down the right but lashed well over the bar wit the first effort on 11 minutes.
The first chance came at the other end two minutes later when Julian Brandt burst into the box but could only side-foot well past Thibaut Courtois’s far upright.
Vinicius Jr blazed high and wide after Valverde found him on the right of the box on 15 minutes but Adeyemi should have put Dortmund ahead after breaking the offside trap to latch onto Mats Hummels’ pass on 21 minutes but went too wide as he rounded Courtois and saw his tame finish from an acute angle diverted behind by the back-tracking Carvajal.
Dortumd came even closer two minutes later when Ian Maatsen pinched possession in the Madrid half and slotted a perfect pass through the defence for Fullkrug who slid to poke a shot which came off the inside of Courtois’s post and rolled back across the line before being scrambled away.
Courtois needed to save from Adeyemi on 28 minutes as he was played in down the left by Brandt and fired a low shot across goal with Carvajal struggling to keep up with the pacey forward.
Courtois’ block looped into the air but Fullkrug was unable to arch his neck to divert the rebound into the ungoarded net.
Vinicius Jr went into the book just after the half-hour after sliding in on keeper Gregor Kobel as he attempted to clear from under his crossbar while Nico Schlotterbeck of Dorrtmund was cautioned soon after for his reaction to conceding a foul on the Brazilian, who went down under minimal contact.
Courtois got down to his right to push Sabitzer’s bouncing 25-yard strike around the post and the Austrian picked up a caution of his own soon after fouling Ferland Mendy.
🏆 WE ARE THE #CHAMP15NS OF EUROPE! 🏆 pic.twitter.com/EURIV8tkpy
— Real Madrid C.F. 🇬🇧🇺🇸 (@realmadriden) June 1, 2024
Four minutes after the turnaround Kroos was denied a fairytale goal on his final club appearance as his curling free-kick was tipped around the upright by Kobel while Carvajal glanced a header over the crossbar from the resultant corner.
Carvajal also ghosted in at the far-post but saw a volley blocked by Maatsen and pounced on by Kobel while Vinicius Jr glanced over from a deep cross soon after.
Fullkrug denied again
The end-to-end pattern continued and just after the hour Fullkrug’s diving header from a curling cross from Adeyemi was beaten away by Courtois.
On a quiet night for the 20-year-old Jude Bellingham was inches away from connecting with Vinicius Jr’s curling cross on 69 minutes, the ball eventually drifting past the post with Kobel in no man’s land.
A day after his 35th birthday Marco Reus replaced Adeyemi for the final 20 minutes but the deadlock was broken moments later when Kroos’ inswinging corner was glanced in at the near post by the head of Carvajal, who had pulled away from Fullkrug – his first goal in 70 Champions League games since scoring against Shakhtar in 2015.
Bellingham spurned the chance to double the lead almost instantly when he fired wide of the post under pressure from Schlotterbeck.
Hummels went into the book for a foul on Camavinga just outside the box on 78 minutes which saw Kroos see another curling free-kick parried by Kobel.
The keeper produced a flying save to tip over Camavinga’s curling effort from 25-yards nine minutes from time and then denied Nacho’s header from the resultant corner.
The pressure told on 82 minutes when Maatsen’s dangerous ball across his own area was intercepted by Bellingham who played in Vinicius Jr to bobble Madrid’s second past Kobel’s left hand and into the corner.
Kroos and Bellingham were withdrawn for Luka Modric and Joselu in the closing stages before Fullkrum saw a powerful close range header ruled out for offside.
Jamie Bynoe-Gittens came off the Dortmund bench to replace another Englishman, Jadon Sancho, but it was Bellingham who became the second English-born player to win the Champions League for an overseas club.
Full-time at Wembley 💔 pic.twitter.com/zNa8MC0eTr
— Borussia Dortmund (@BlackYellow) June 1, 2024