The final Champions League group stage ended on Wednesday. Next season, UEFA will instead move its premier competition to what is being called a “league stage,” in which 36 teams (up from 32) play eight matches against teams from different pots from September to January. Qualification to the knockout round is decided by your overall finish in a single table — the top eight advance directly to the round of 16, where they’ll play winners of ties between teams ranked ninth through 16th and those ranked 17th to 24th.

It’s all going to be fine. I don’t hate the new format as much as others — because of the tiered stakes, plenty of teams should have plenty to play for deep into the league stage — but the existing format was certainly easy and clean. And you could form mini-rivalries by playing teams twice in a small amount of time. For Union Berlin’s first Champions League journey, for instance, it certainly meant something to both host European giants Real Madrid and play at the Bernabeu.

Regardless, change is coming, and the 2023-24 group stage was the last of its kind. With the final 16 teams known — the draw for the first knockout rounds will take place on Monday — let’s look back at how the group stage unfolded, and rank the remaining teams by likelihood of winning it all.


The biggest surprises of the Champions League group stage

Let’s be honest: With Europe’s stratified balance of power, there aren’t typically that many group stage surprises. There are upsets, sure, but most of the teams that are supposed to advance end up advancing. But hey, I guess that makes the surprises more surprising! And we had at least a couple of big developments.

Copenhagen took Manchester United’s spot

Soccer has been around long enough that you can almost always find a historical tie if you’re looking. Rarely, though, is it quite this blatant.

On Oct. 20, 1993, Manchester United was attempting to become the first English team to qualify for the recently formed Champions League group stage. Thanks in part to a Bryan Robson strike in the third minute, Alex Ferguson’s squad took an early 2-0 lead, but watched it quickly disappear. Eric Cantona scored in the 81st minute to salvage a 3-3 draw, but the lapse was costly: Following a 0-0 draw in Istanbul two weeks later, Galatasaray advanced on road goals. “The better team by some distance prevailed,” columnist Rob Hughes wrote in The Times.

Almost exactly 30 years later, United’s last group stage experience ended at the hands of an old rival.

The initial qualification odds from Group A were pretty clear: While Bayern Munich was the obvious overall qualification favorite (implied odds via Caesars back in September: around 83%), Manchester United wasn’t far behind (75%). It was going to be a surprise if either Galatasaray (28%) or FC Copenhagen (14%) topped the three-time European champions.

They both did. Following a semi-encouraging 4-3 loss at Bayern to begin the group stage, United managed to lose to Galatasaray at home, blow a 2-0 lead in an away loss to Copenhagen, blow another 2-0 lead in a 3-3 draw away to Galatasaray and suffer a meek 1-0 loss to Bayern at Old Trafford.

While teams like Borussia Dortmund masked iffy league form with strong Champions League performances, United has shown allPremier League play, they’ve scrounged out more points than their level of performance suggests they should — they’re currently sixth despite a negative goal differential — thanks to one-goal wins and match-winners in the 69th, 76th, 76th, 77th, 91st and 97th minutes. But in the Champions League they suffered one-goal defeats clinched in the 81st, 87th and 92nd. Karmic balance, I guess. This team isn’t one of the 16 best in Europe at the moment, and therefore didn’t deserve a spot in the round of 16.

Somehow, Galatasaray didn’t advance

One of the fun things about this group stage is that in order to advance, you must somehow solve at least two of three opponents over 180 minutes. Galatasaray solved Manchester United and deserved to take points from Bayern, but they’re headed to the Europa League because they couldn’t solve Copenhagen.

In two matches against Manchester United, a win and a draw, Galatasaray not only traded blows beautifully, but they actually landed more punches: They scored six combined goals from 30 shots worth 4.0 xG, or expected goals, and allowed five goals from 31 shots worth 3.6. In their 3-1 home loss to Bayern, they were a superior and unfortunate team: They attempted 20 shots worth 2.7 xG and allowed 14 shots worth 2.0 but lost by two. (The return trip to Munich was pretty one-sided.)

This was a wonderfully talented team replete with both proven veterans such as Mauro Icardi, Wilfried Zaha, Hakim Ziyech and Dries Mertens (combined: five goals and two assists from 31 chances created) and enticing younger stars like right-back Sacha Boey (23) and Kerem Aktürkoglu (25). They deserved more than four points from four matches against these financial heavyweights, but they couldn’t break down Copenhagen.

Galatasaray doubled up the Danish champs in terms of total shots (36 to 18 over two matches), but only three of their 36 shots were worth more than 0.15 xG, only one over 0.3. Copenhagen put together one brilliant quick-strike attack — Diogo Gonçalves to Elias Achouri to Lukas Lerager for a relative tap-in (xG: 0.61) in the 58th minute — and that was that.

Borussia Dortmund advanced with relative ease

Borussia Dortmund obviously wasn’t a Copenhagen-level underdog in this tournament.

The 1997 European champions (and 2013 runners-up) have had ups and downs through the years, and they’ve only rarely been able to challenge Bayern Munich in league play over the last decade, but they’ve still made the Champions League knockout stages now nine times in the last 12 seasons. Even while the sportsbooks named them the least likely team to advance from this year’s Group of Death (Group F), their equivalent odds were still around 37%, or about a three-in-eight chance.

Still, they began the 2023-24 season in dire fashion, with draws against low-table Bundesliga teams Bochum and Heidenheim and, in Champions League play, a punchless road loss to PSG and a nil-nil home draw against AC Milan. They gave no one a reason to think they were going to last long in Europe. But they outscored Newcastle 3-0 in a pair of wins, then dominated Milan 3-1 at the San Siro. Despite the dismal start, they were the first team to win the hardest group in the tournament with a 1-1 draw against PSG on the final matchday.

That could have been even more impactful had Newcastle beaten Milan and eliminated PSG altogether. But Milan won, allowing PSG to advance despite some almost comically poor fortune in front of goal. Over six matches, PSG attempted shots worth 13.5 xG, but scored only nine goals; opponents, meanwhile, attempted shots worth 6.0 xG, but scored eight. That’s not sustainable over a long period of time, but it almost eliminated another one of Europe’s richest teams.


Most impactful Champions League group stage results

While some of Europe’s biggest heavyweights cruised to qualification, let’s walk through the results that had the most individual impact on qualification.

Aug. 13: Copenhagen 3, Sparta Prague 3. Before Copenhagen could wreck both Manchester United’s and Galatasaray’s plans, they had to come back twice and win a penalty shootout against Sparta in their first round of qualification. After a scoreless draw at home, Jordan Larsson scored in the first minute in Prague, but Sparta tied it in the 80th minute and twice took leads in extra time. On both occasions, veteran Viktor Claesson tied the game, then he was one of four Lions to nail their penalties in the shootout. Kamil Grabara made one shootout save, and Copenhagen advanced.

After a more straightforward defeat of Rakow Czestochowa in the next round, they landed a group stage bid. Then they capitalized on it.

Oct. 25: Borussia Dortmund 1, Newcastle United 0. The Group D point totals heading into this match: Newcastle 4, PSG 3, Milan 2, BVB 0. The point totals from this day forward: BVB 11, Milan 6, PSG 5, Newcastle 1. Felix Nmecha’s goal near halftime gave Borussia Dortmund a lifeline, and ended up flipping around the entire group.

Oct. 25: PSG 3, Milan 0. Kylian Mbappé, Randal Kolo Muani and Lee Kang-in all scored, PSG got a nice response to a walloping at Newcastle a few weeks earlier and in the end, the size of the win mattered above all else. Milan won the rematch 2-1, but PSG’s goal differential earned them second place.

Nov. 8: Copenhagen 4, Manchester United 3. For all of United’s disappointing performances, if they could have simply held onto a 2-0 lead in Copenhagen, they would have advanced. Instead, they imploded after a questionable red card for Marcus Rashford. Eventually. It was still 3-2 United after Bruno Fernandes’ 69th-minute penalty, but Lerager and 18-year-old Roony Bardghji scored within four minutes of each other, and Copenhagen won at the Parken Stadium.

Nov. 8: PSV Eindhoven 1, Lens 0. PSV is into the knockout rounds for the first time since 2015-16 thanks to a one-point advantage over Lens. That was derived primarily from this home win. Luuk de Jong’s tricky 12th-minute header gave them an early lead and despite a late run of decent chances, Lens couldn’t equalize.

Nov. 8: Real Sociedad 3, Benfica 1. La Real and Inter drew twice against each other and ended up tied at 12 points, so Real Sociedad ended up winning Group D thanks to goal differential. You could say that a 15-minute span in this match — in which Mikel Merino, Mikel Oyarzabal and Ander Barrenetxea all scored in front of a delirious home crowd — made the difference and potentially earned them a friendlier draw in their first Champions League round of 16 in 20 years.

Dec. 12: Copenhagen 1, Galatasaray 0. What they may lack in high-end star power, they make up for with creativity from players like Mohamed Elyounoussi and Goncalves and extreme defensive organization. The latter saw them through in this one.


My five favorite matches

This list has nothing to do with importance and everything to do with simply being really fun to watch for one reason or another.

Sept. 20: Bayern Munich 4, Manchester United 3. I’m forever a sucker for a sloppy track meet, and this one was probably the best of the group stage. United played confident and exciting ball early on, but fell behind when André Onana misplayed a Leroy Sané free kick. Serge Gnabry scored shortly after, but United stayed within striking distance. Three goals in the final 10 minutes or so took this one from fun to downright silly.

Sept. 20: Real Sociedad 1, Inter Milan 1. The Real Sociedad crowd was one of the stars of the group stage. It was particularly noticeable in this one, their first Champions League home match in nearly a decade. Brais Méndez gave La Real an early lead, but after trailing for more than 80 minutes, Inter equalized late thanks to a Lautaro Martínez goal.

Oct. 24: Manchester United 1, Copenhagen 0. After Onana’s howler in Munich, it looked as if he had saved United’s qualification chances when, after Harry Maguire gave the Red Devils a lead in the 72nd minute, Onana saved a Jordan Larsson penalty in stoppage time.

Nov. 7: Shakhtar Donetsk 1, Barcelona 0. All things considered, a quiet and meek group stage performance from Shakhtar, playing their home games in Hamburg, would have been understandable and excusable. But that’s not really how this club operates. They overcame a 2-0 deficit to beat Royal Antwerp 3-2 in early-October, gave Barcelona a 2-1 scare in late-October, then ground out six points with back-to-back 1-0 victories in November. This one was particularly impressive. A lovely Giorgi Gocholeishvili cross and a dinked Danylo Sikan header gave Shakhtar the lead late in the first half, and a couple of huge late saves from Dmytro Riznyk sealed the win to keep them in the competition until the final matchday.

Dec. 13: Royal Antwerp 3, Barcelona 2. What can I say? Antwerp’s really fun to watch, it was their first Champions League/European Cup appearance in 66 years, and they got to win a back-and-forth match against a heavyweight. I’m a sucker for things like that even if the match had no impact on anything.


Ranking the remaining Champions League knockout contenders

1. Manchester City. City’s grip on the “Quite obviously the best team in the world” title has slipped a bit with the vulnerability they’ve shown recently in domestic play. They’re currently fourth in the Premier League, behind Liverpool, Arsenal and an Aston Villa team that dominated them last week. But Man City are still the obvious favorites.

2. Arsenal. They looked randomly shaky early on, blowing home leads in domestic draws and suffering a frustrating early-October loss to Lens. But of late they’ve alternated between dramatic late charges and displays of epic dominance. Their 6-0 win over Lens on Nov. 29 was probably the single most dominant and resounding performance of the entire group stage. They’re serious contenders.

3. Bayern Munich. On one hand, you could discount the German giants by simply saying that Harry Kane’s presence is papering over personnel cracks and shaky management. Thomas Tuchel has been mostly unimpressive leading this team, and the midfield is awfully questionable. On the other hand … they have Kane! And he’s on a ridiculous scoring pace! Bayern once again went unbeaten in group play, and despite the glitches they’re on pace for their highest league point total in six years.

4. Real Madrid. On a year-to-year basis, Real Madrid remains the Champions League team to rank. Injuries have hit them hard, and they trail Girona in LaLiga play. They’ve been more reliant on late heroics — mostly from Jude Bellingham — than anyone ever should be. That doesn’t feel like it is sustainable. But they sustained it in winning the Champions League two years ago, and they’re the only team besides City to win all six of their group stage games. They’ll have Vinícius Júnior fit and back in the spring, too.

5. Inter Milan. Finishing second in Group D opens them up to an unfriendly draw, but Inter have lost just one of 21 matches in all competitions this season. They look better than they did in 2022-23 … when they made the Champions League final.

6. RB Leipzig. I might be overreacting to the simple fact that they didn’t lose 7-0 to City like they did last season, but I also just think this is a sturdy and exciting team. For all the talk of Bayer Leverkusen’s early-season brilliance, RB Leipzig is only three points back of the Bundesliga lead. And again, they didn’t lose 7-0 to City this time around! Progress!

7. Atletico Madrid. Diego Simeone’s 13th Atleti team seems to have a little more upside and instability than we’re used to. They scored seven on Rayo Vallecano in league play and six on Celtic in the Champions League, but they were also leaky in defense early in the season, and their road form has been pretty poor. They might not be a tournament favorite, but they’re one hell of a wildcard.

8. Napoli. For as disappointing as they’ve been in Serie A play, where they’ve already lost five matches after losing only four last season, Napoli were sturdy in the group stage, trading blows well in two losses to Real Madrid and taking 10 of 12 points from Braga and Union Berlin. For a team battling a Scudetto hangover, there’s still a lot of upside here.

9. Paris Saint-Germain. They’re still young in certain areas, and they’re still less than the sum of their parts, but it took a lot of poor fortune for them not to win their group. PSG still have got Mbappe and a number of scary attackers, but their draw will be trickier thanks to their second-place finish, and they’re probably not yet equipped for a big spring run.

10. Barcelona. The bad news is that a dire run of injuries has contributed to pretty dreadful form at the moment: Barca have won only three of their past eight matches in all competitions and allowed a combined seven goals to Girona and Antwerp in the last two. The good news is that their next Champions League match is two months away, and losing to Antwerp did not cost them first place in the group.

11. Borussia Dortmund. Gregor Kobel has been the best goalkeeper in this tournament, and Mats Hummels has been heroic in defense. But BVB’s Bundesliga form suggests they’re probably not going to win too many knockout ties.

12. Real Sociedad. A run of early draws has held La Real back in LaLiga play (they’re currently sixth), but they’ve got one of the best midfields in this competition, and in their first 24 matches of 2023-24, they’ve lost only three times — to Real Madrid, Barcelona and Atletico Madrid.

13. PSV Eindhoven. They’ve played 26 matches in 2023-24, and they’ve lost just once — away to Arsenal. They’ve outscored league opponents by a 52-6 margin. The attack wasn’t incredibly potent in Champions League group stage play, but Johan Bakayoko’s creativity and a sturdier-than-usual defense got them to their first knockout stage in 24 seasons and could make them a tough out in February.

14. Porto. This isn’t the most high-end Porto team to ever reach the knockout rounds: They’ve already lost (gasp!) twice in league play and benefited from drawing a weaker Shakhtar and Antwerp. But they still hit most of the Porto notes — high-upside goalkeeping from Diogo Costa, mostly sturdy defending — and the attacking trio of forwards Evanilson and Mehdi Taremi and winger Galeno has provided quite a bit of firepower in this tournament.

15. Lazio. They’re a decidedly mid-table team in Serie A this year, and they were awfully lucky to land in a group with Celtic and a Feyenoord team that has regressed from last season. Lazio still have occasional veteran difference-makers like Ciro Immobile and Luis Alberto, but this isn’t the most dangerous team in the world at the moment.

16. Copenhagen. They’ve probably only got two matches left in this competition, but Copenhagen didn’t get to the knockout rounds by fluke. They have a plan, they execute it well, and as they showed against both Manchester United and in a toe-to-toe draw with Bayern, they aren’t scared of the heavyweights.