For the 15th time in club history, Real Madrid are champions of Europe after beating Borussia Dortmund 2-0 in the UEFA Champions League final at Wembley Stadium on Saturday.
[ MORE: Euro 2024 squads | Schedule, groups, how to watch Euro 2024 ]
Vinicius Junior and Dani Carvajal were the goalscorers as Carlo Ancelotti’s side achieved something no other Real Madrid side had previously done: winning the Champions League without losing a single game in the competition this season. They’re favorites every year, and for good reason.
Dortmund dominate first 45, but Real Madrid win with patience
Sometime around the 30- or 35-minute mark, it was abundantly clear that Real Madrid were in damage-limitation mode and playing for halftime. Real Madrid. In a Champions League final. All the way on their heels, heads spinning, miles and miles second-best. Out-shot 8-2 (3-0 on target) and battered 1.68-0.09 xG.
First, Karim Adeyemi round Thibaut Courtois on a breakaway but his shot was blocked by a recovering defender despite briefly being in on goal. Two minutes later, Niclas Fullkrug hit the post after Chelsea loanee Ian Maatsen found him near the penalty spot. Five minutes after that, Courtois bested Adeyemi and Fullkrug as each had a go on the end of a counter-attack.
Real Madrid were massive favorites heading into the final, but simply put, they couldn’t have be any worse in the first half — other than the fact they hadn’t conceded a goal. And — wouldn’t you know it — that turned out to be pretty important.
[ STATS: Borussia Dortmund v Real Madrid stats on FotMob.com ]
Los Blancos were certainly better after the restart — equal peers to Dortmund for the first 15 and equally dominant over the final 30 — and they were eventually rewarded with a goal, as these UCL finals typically go. Toni Kroos, playing in the final club game of his career ahead of Euro 2024 and retirement this summer, served up a corner kick into the scrum of bodies at the near post, and it was 5-foot-8 right back Carvajal who got his head on the ball and looped it over everyone to the far post in the 74th minute.
At that point, Madrid were well and truly on top, dominating not only possession but also scoring chances the rest of the way, and inevitably, scoring the next goal in the 83rd. Jude Bellingham got on the ball in acres of space and picked out Vinicius, also in acres of space, with a simple through ball. Vinicius tooks a touch to settle the ball and skipped his finish off the outstretched hand of Gregor Kobel.
How to watch Borussia Dortmund vs Real Madrid live, stream link and start time
Kick off: 3pm ET, Saturday (June 1)
How to watch: Paramount+ and TUDN USA
Borussia Dortmund vs Real Madrid highlights, final score: 0-2
Dani Carvajal 74', Vinicius Junior (83')
Vinicius puts the game to bed with a cool finish - Borussia Dortmund 0-2 Real Madrid (83')
Bellingham had acres of space when he turned into the center of the field, and so did Vinicius as he timed his far-side run. The pass was perfect, the finish was the perfect. Easy as they like.
VINI JR PUNISHES DORTMUND 💥 pic.twitter.com/ubIS1C7562
— CBS Sports Golazo ⚽️ (@CBSSportsGolazo) June 1, 2024
Bellingham denied by a brilliant tackle
That is a sensational last-ditch tackle from Schlotterbeck. Bellingham looks certain to slot home but the German defender just gets a toe on the ball to divert it past the post.
Dani Carvajal heads home a corner - Borussia Dortmund 0-1 Real Madrid (74')
A corner is whipped in to the near post and this time Carvajal gets his run and finish spot on as he rises above Fullkrug to head home.
DANI CARVAJAL TAKES FLIGHT! ✈️
— CBS Sports Golazo ⚽️ (@CBSSportsGolazo) June 1, 2024
REAL MADRID BREAK THE DEADLOCK IN THE #UCL FINAL 💥 pic.twitter.com/tXze3KbgGd
Marco Reus is on for Adeyemi
The Dortmund legend Marco Reus, in his final game for the club, is on for Karim Adeyemi. Huge roar from the Dortmund fans. Can Reus be the hero for his hometown club? What a fairytale ending that would be...
Bellingham almost heads home
Vinicius whips in a great cross from the left and Bellingham is flying in with his head but Kobel just does enough to put him off. Bellingham doesn’t get a touch on it. If he did, surely Real Madrid would be ahead.
Rodrygo wins a corner, Vinicius heads wide
Brilliant play from Rodrygo and he wins a corner. The corner comes back to Kroos and his cross is headed wide by Vinicius. Real Madrid just reminding Dortmund they are still capable of creating.
Courtois saves Fullkrug’s header
A cross into the box finds Fullkrug at the back post and he gets a powerful effort on goal but Courtois pushes it away. Dortmund continue to have the better chances.
Modric to come on soon?
Real Madrid have struggled for any control in this game. Luka Modric is warming up on the sidelines. Is he going to come on soon to try and wrestle back control and dictate the tempo?
Carvajal’s shot blocked by Maatsen
A cross from the left finds Carvajal at the back post and his volley is on target but Maatsen blocks it. Kobel had it covered but that is better from Real who are finally starting to wake up.
Top save from Kobel to deny Kroos
Toni Kroos whips a delightful free kick from a tight angle up and over the wall but Gregor Kobel pushes it away in the Dortmund goal. What a stop from the goalkeeper. The corner then comes in and Dani Carvajal flicks a header just over.
Back underway as the smoke from flares lingers
Plenty of flares were let off at the start of the second half and there is a smoky haze hanging around Wembley.
Half time: Borussia Dortmund 0-0 Real Madrid
Adeyemi has gone close, Fullkrug (who may have been just offside) hit the post and Dortmund have been well on top. Real Madrid have had a couple of shots but have yet to get going. Dortmund are crushing Real Madrid in midfield and they are playing the ball through to Adeyemi and Sancho time and time again.
Controversial moment
Vinicius goes down under a challenge from Hummels but there is no contact. The free kick was given to Real Madrid, but Vinicius very lucky to not get a second yellow there. Blatant dive.
Courtois denies Sabitzer
Marcel Sabitzer drills a low shot from distance which is on target. Thibaut Courtois pushes it wide and he should save it.
Vinicius booked for a foul on Kobel
The Dortmund goalkeeper lets the ball roll across his body as he goes to pass it a few yards out from goal, then Vinicius dives in and catches him. Kobel reacts like there was plenty of contact but there wasn’t. Vinicius unlucky to get a yellow for that.
Dortmund exposing Real Madrid’s midfield
Real Madrid are missing Aurelien Tchouameni massively. Huge gaps opening up in their midfield for Borussia Dortmund to turn and play passes through with no pressure on them.
Adeyemi’s shot is saved and Fullkrug can’t bury the rebound
Dortmund fly forward again after a Real Madrid attack and Adeyemi is in. His shot across goal is saved well by Courtois, then the rebound is just behind Fullkrug who can’t get a proper header on goal.
Fullkrug hits the post
Lovely ball through to Fullkrug and he slides in as he hits it but the ball hits the post and comes back out. Fullkrug was perhaps just offside. Another glorious chance comes and goes for Dortmund.
Glorious chance for Adeyemi
Should be 1-0 to Dortmund. Adeyemi times his run perfectly with Carvajal caught out, but as Adeyemi rounds Courtois he goes too wide and a huge chance goes begging. Good goalkeeping from Courtois but Adeyemi has to finish that.
Real looking out to the right again
Valverde plays in Carvajal with a lovely pass and his cross almost finds Bellingham but is just behind him.
Big chance for Brandt but he scuffs it wide
Lovely ball over the top for Fullkrug who times his run to perfection. The big German striker holds it up and plays in Julian Brandt but Brandt can’t quite connect with his finish and he scuffs it wide.
Valverde smashes over
Dani Carvajal links up well with Federico Valverde down the right and the ball is cut back for Valverde but the Uruguayan midfielder smashes his shot high and wide. Better from Real Madrid.
We are off and running!
The final is underway but there is a stoppage right away as there are three separate pitch invaders. The situation is under control now and Dortmund have made a decent start. They’ve seen plenty of the ball and whipped in a corner which was flicked on but Real Madrid cleared.
Borussia Dortmund lineup
Kobel; Ryerson, Hummels, Schlotterbeck, Maatsen; Can, Sabitzer; Sancho, Brandt, Adeyemi; Fullkrug
Real Madrid lineup
Courtois; Carvajal, Rudiger, Nacho, Mendy; Valverde, Camavinga, Kroos; Bellingham; Rodrygo, Vinicius Junior
Focus on Borussia Dortmund, team news
Spain youth national team defender Mateu Morey should be fit after having a cold, while English players Jadon Sancho and Jamie Bynoe-Gittens could see the pitch at Wembley.
Dortmund have a few injury issues with left back Remy Bensebaini hoping to be fit but their main stars are ready to shine.
Focus on Real Madrid, team news
There are several notable connections between the clubs, but the headline-stealing one is Real Madrid and England phenom Jude Bellingham facing his former club. Bellingham has been sensational in his debut season for Real and playing at his home stadium for the English national team with the chance to be a hero at the age of 20 for Real Madrid is something he will have dreamed of.
Carlo Ancelotti has said he will make a decision at the last possible moment when it comes to who to start in goal as Andriy Lunin has been excellent standing in for Thibaut Courtois and came up huge in Real’s Champions League run, but Courtois is now back fit.
Toni Kroos will be playing in his final game for Real after confirming he will retire this summer, and he is likely to start with Aurelien Tchouameni extremely unlikely to feature after a foot injury. Star defender David Alaba remains out for the season after ACL surgery.