Everyone knows Real Madrid are a heavy favorite to win the Champions League for an even-bigger-record 15th time Saturday.

They’re Real Madrid, of course, and they’re taking on Borussia Dortmund, who just finished fifth in the German Bundesliga. Per ESPN Bet, Madrid have a 75% chance of lifting the trophy, while Dortmund are 1-in-4 to win their second European Cup. That makes Madrid somewhere close to the biggest favorite of the past 20 years.

But it’s still only one game, and anything can happen. Just ask Manchester City, who were taken down in the 2021 Champions League final by Chelsea, the team that finished fourth in their same league. Or Bayern Munich, who also fell to Chelsea in 2012, the year that the Blues finished sixth in the Premier League team. Or, heck, Man City, who lost the FA Cup last week to Manchester United, a team that finished in eighth place in the Premier League, just days after City won the same league.

These single-game finals tend to be decided by individual moments — whether greatness or error — from individual players rather than tactical triumphs. So, ahead of Saturday’s Champions League final, let’s rank the 30 best players between these two teams who will decide the next Champions League winner.


Real Madrid logo 1. Vinícius Júnior, forward, Real Madrid

Somehow, a young, flashy, uber-productive, trophy-winning Brazilian winger for Real Madrid has become … Underrated? While his defensive impact has started to wane as he’s aged closer to his prime years of 24 to 28, he’s the best player in the world at perhaps the deepest position in the world: left wing.

No one’s better at carrying the ball, and no one who comes close to his ball-carrying contribution can also come close to his attacking production. He impacts every game he plays, and I’m not convinced that he isn’t the best player in the world.

Real Madrid logo 2. Toni Kroos, midfielder, Real Madrid

What a way to go out. For the 10th year in a row, Kroos has played more than 2,000 league minutes. Per Michael Imburgio’s DAVIES model, which essentially puts a value on every on-ball action that happens across the field, the 34-year-old German added 4.97 goals with his build-up passing. That’s nearly a goal more than second-best Rodri (4.07), who played 800 more minutes for Manchester City.

Despite all of Madrid’s young talent in midfield, that’s going to be near-impossible to replace.

Real Madrid logo 3. Jude Bellingham, midfielder, Real Madrid

Why not No. 1? He outperformed his expected goals by 7.7 — he scored 18 non-penalty goals from 10.3 xG. If that kind of finishing form — the third highest over-performance of anyone in Europe — is real, then he’s the best player in the world. No question about it. Of course, no one finishes that well over a long run, and he underperformed his xG in all of his previous four professional seasons.

He’s an incredible player, but the current reality is likely closer to the one we saw in the second half of the season, rather than the first.

Real Madrid logo 4. Rodrygo, forward, Real Madrid

His attacking production dipped a bit this year, but he still came in over 0.5 goals+assists per 90 minutes, and I think some of that comes down to him having to facilitate and vacate space for Bellingham to run into. Rodrygo carried and passed the ball upfield more than he ever has this past season. He finds a way to fit into whatever talent is around him; he’s just a winning player.

Real Madrid logo 5. Federico Valverde, midfielder, Real Madrid

Speaking of winning players, Valverde is a brilliant, dynamic, athletic, versatile player who makes his teammates better. He’s the exact kind of guy that Madrid lacked in the first Galacticos era: a superstar role player who not only fills in the gaps behind all the bigger names but can also contribute decisive moments by himself. My one gripe:

Trade some of those terrible shots from outside the box for a couple more runs into the penalty area.

Real Madrid logo 6. Aurélien Tchouaméni, midfielder, Real Madrid

It feels like we still haven’t really seen Tchouaméni fully realized at Madrid. Kroos somehow getting better with age lessened the need for him to contribute in build-up play, while injuries across the backline have required him to play out of position next to Antonio Rudiger at center back.

At the same time, he was playing out of position at center back at 24 years old for a team that won LaLiga and took down both Manchester City and Bayern Munich. My guess is he’ll be the one asked to fill the Kroos-shaped void next season.

Real Madrid logo 7. Antonio Rüdiger, center back, Real Madrid

He flourished at Chelsea — but that was in a back three. In his first season at Madrid, he wasn’t always a first-choice starter. In his second season at Madrid … He’s pretty much been the only healthy center back and he’s been immense playing for a team that doesn’t really do all that much to protect its center backs. Two Champions Leagues in four years, with two different teams, would be a pretty nice haul.

BVB logo 8. Nico Schlotterbeck, center back, Borussia Dortmund

Our first BVB player appears on the list!

I’m not sure this is a popular opinion, but I love this guy. Bundesliga center backs are notoriously hard to assess because of how different the league is, stylistically, to everyone else. But if you want a defender who is going to help you win games with the ball, there aren’t many better than Schlotterbeck. He’s been starting Bundesliga games since he was a teenager, and he’ll still only be 24 at the start of next season.

Real Madrid logo 9. Eduardo Camavinga, midfielder, Real Madrid

Camavinga, meanwhile, will only be 21 at the start of next season. He has a ridiculous amount of minutes under his belt already, and I’m pretty confident he’s going to be a star — if he isn’t already. The only hesitation is that he still hasn’t become a full-time starter at Madrid. If the semifinals are any indication, he’ll be coming off the bench at Wembley, too.

BVB logo 10. Mats Hummels, center back, Borussia Dortmund

Hummels is 35 years old. Hummels has won more tackles than any player in the Champions League this season. Hummels has intercepted more passes than any player in the Champions League this season.

Hummels is everywhere.

BVB logo 11. Jadon Sancho, forward, Borussia Dortmund

I just can’t quit him. Out of any Dortmund player, he’s the one most capable of taking over the match and deciding the result on his own. No player has completed more than five successful take-ons against Madrid this season, but one of those players was Bayern Munich’s Jamal Musiala in the first leg of the semifinals. And his teammate, Leroy Sané, completed four of his own in the same game. In the first leg of the Champions League semifinal against PSG, Sancho completed 13.

BVB logo 12. Gregor Kobel, goalkeeper, Borussia Dortmund

This is a different Dortmund team than you’re used to seeing. With an average age, weighted by minutes played, of 26.8, Dortmund are older than your average Bundesliga side.

There’s no Sancho 1.0, or Erling Haaland, or Bellingham — the superstar prospect who will obviously leave the club sometime soon. But someone should take a look at Kobel, the 26-year-old who stood on his head against PSG and has allowed nearly seven goals fewer than expected in his three years at Dortmund.

Real Madrid logo 13. Luka Modric, midfielder, Real Madrid

On a per-minute basis, 38-year-old Modric isn’t too different from 31-year-old Modric — except for the part where 38-year-old Modric is not expected to start the Champions League final.

BVB logo 14. Julian Brandt, attacking midfielder, Borussia Dortmund

He’s one of Dortmund’s most important players, a link between midfield and attack who can score and create a fair bit on his own. Outside of Schlotterbeck, no Dortmund player featured in more minutes this season, either. At the same time, I’m not sure he’d get much playing time at all if he were on Real Madrid’s roster.

Real Madrid logo 15. Whoever is starting at goalkeeper for Real Madrid

This was a tricky one. Andriy Lunin has great shot-stopping numbers over a decent sample of games that extends beyond just this season and beyond just Madrid. Thibaut Courtois, meanwhile, is one of the best goalkeepers in the world, but he’s just coming back from a succession of serious knee injuries.

ESPN reports suggest that Courtois is in line to take the job back from Lunin and start against Dortmund. Given there’s still uncertainty over the form of Courtois and it’s not yet guaranteed that he will play, we’re splitting the difference and putting the Madrid goalkeeper right in the middle of the rankings.

Real Madrid logo 16. Brahim Díaz, attacking midfielder, Real Madrid

At Milan, Diaz played a lot of minutes without producing much. At Madrid, Diaz played much fewer minutes and produced much more. He’s the ideal profile of an off-the-bench attacker for a big club — energetic, but also not so expensive or accomplished that he’ll want to leave if he doesn’t frequently start matches.

BVB logo 17. Ian Maatsen, fullback, Borussia Dortmund

Maybe he should be higher? Maatsen’s only season of top-flight performance is his current half-year loan spell with Dortmund. But he’s almost immediately become one of the club’s most important contributors since heading to Germany. He’s done a nice job functioning in that kind of fullback-midfielder hybrid role where you’re not really an overlapping outlet, but instead helping to progress the ball up the field.

BVB logo 18. Marcel Sabitzer, midfielder, Borussia Dortmund

Sabitzer is a strange player. He’s technically one of Dortmund’s two holding midfielders, but he’s rarely dictating play from deep — that’s for the center backs to do. Instead, a couple times per match, he’ll just pop up in incredibly important areas with the ball at his feet, with the potential to make a decisive play that either pushes Dortmund a step closer to scoring a goal or provides the opposition with an opportunity to counterattack in the other direction.

BVB logo 19. Niclas Füllkrug, center forward, Borussia Dortmund

For his career, he’s something like a goal or an assist every other game-type striker. And that’s about it. He’ll have a couple moments of savvy holdup play every match, but he’s ultimately on the ball very little, receiving very few forward passes, and not even getting too many touches in the penalty area, either.

There aren’t many hulking target strikers around these days, though, and I think Fullkrug’s unique profile has thrown off some of Dortmund’s European opponents.

Real Madrid logo 20. Joselu, center forward, Real Madrid

With both Diaz and Joselu, Real Madrid this season have been a small-scale study in both team and sub effects. When you play with better players, it’s easier to produce. And when you play most of your minutes off the bench against tired legs, it’s easier to produce. When you do both? Your goals+assists rate jumps from a career mark of 0.4 per 90 all the way up to 0.64 per 90.

Real Madrid logo 21. Dani Carvajal, fullback, Real Madrid

I have a feeling I might regret putting Carvajal here on the list. At this stage in his career, the 32-year-old Carvajal feels like he’s either karate-chopping a volley into the upper corner, or pleading with the referee not to send him off for his fifth-straight foul on whatever winger just ran past him. He tends to show up in finals, though.

BVB logo 22. Emre Can, midfielder, Borussia Dortmund

He’s the only safe passer in the team, but pretty much all of the valuable forward passing comes from players in the backline. Along with the center backs, he’ll be tasked with tracking any of Bellingham’s runs through the middle.

Real Madrid logo 23. Nacho, center back, Real Madrid

All things considered, the 34-year-old club lifer was at best Madrid’s fourth-choice center back coming into this season, behind the injured duo of Éder Militão and David Alaba, Rudiger and maybe even Tchouameni, too. Although Militao has made an incredible recovery from a torn ACL earlier this season, it seems like Nacho will still get the nod Saturday.

While we’re here, though: A fully healthy Militao would’ve comfortably slid into the top 10 of these rankings.

Real Madrid logo 23. Ferland Mendy, fullback, Real Madrid

He keeps the ball when he gets it. Other than that, he’s not creating anything on the attacking end and rarely winning the ball back defensively. If Dortmund are going to win, it seems like they’ll be pressing the Sancho-on-Mendy mismatch, over and over and over again.

BVB logo 25. Karim Adeyemi, forward, Borussia Dortmund

He’s incredibly fast, and he also trips over the ball multiple times per match. Adeyemi is the Luis Mendoza of European soccer.

BVB logo 26. Donyell Malen, forward, Borussia Dortmund

Per the DAVIES model, there are 10 players between these two teams who have added at least 0.1 goals per 90 minutes: Kroos, Vini, Bellingham, Rodrygo, Modric, Hummels, Brahim, Valverde, Schlotterbeck and Malen.

Malen, the 25-year-old Dutchman, comes from the Marcus Rashford mold of wingers: stay high, and when you get the ball, drive it into the box and rip a shot. Ironically, that profile balances nicely with Sancho’s touch-heavy approach on the other wing.

Were Malen healthy, he’d be significantly higher on this list, but a succession of leg injuries in April mean that he hasn’t played 90 minutes in a match since St. Patrick’s Day.

Real Madrid logo 27. Lucas Vázquez, fullback, Real Madrid

I don’t know if he’d hold up over a starter’s workload for a full season, but he’s become a quite effective backup fullback as he’s aged deeper into his 30s. Seems bizarre to write this out, but Real Madrid would be totally fine if Vazquez had to play right back in the Champions League final.

BVB logo 28. Niklas Süle, defender, Borussia Dortmund

Maybe there’s a world where he starts the final, in an effort to slow down Vini, but the gigantic defender just hasn’t been able to string together any consistency over his career. After a breakout season with Bayern Munich as a 22-year-old in 2018-19, he’s broken the 2,000-minute mark in just one of the past five seasons.

BVB logo 29. Marco Reus, forward, Borussia Dortmund

This is how aging tends to work for attacking wingers: At age 34, Reus is averaging his highest pass completion percentage of the past seven seasons while attempting the fewest take-ons over that same stretch. He’s been quite effective in limited minutes this season — nearly 0.8 goals+assists per 90 — but his lack of burst has been evident against better competition.

BVB logo 30. Julian Ryerson, fullback, Borussia Dortmund

If you’re wondering where the Champions League might be won and lost, No. 1 on this list will likely be directly matched up against No. 30 on Saturday.