Manchester City's run of seven straight wins was brought to an end by RB Leipzig, losing 2-1 on the final matchday of the Champions League group stage.
City were already assured of top spot in group A heading into this one, but were very flat and carved open plenty of times at an empty Red Bull Arena.
The game started slowly and the first chance fell to Leipzig after 15 minutes, with the marauding Konrad Laimer nearly catching Zack Steffen out at his near post from the byline.
Kevin De Bruyne returned to the City starting lineup following a bout of coronavirus in November, and came close to giving his side the lead with a cute side-footed half volley just inside the Leipzig penalty area, but it sailed over the top of the bar.
Steffen had to be quick off his line to deny Andre Silva a golden chance after being slipped in behind the City defence by Christopher Nkunku, before Jack Grealish had a shot deflected over after a neat lay-off from Phil Foden.
And Dominik Szoboszlai had the ball in the net on the counter attack, darting into the space vacated by John Stones and rounding Steffen to give Leipzig the lead for a fourth successive Champions League game. After a VAR check, the goal was ruled onside and City were officially behind.
Emil Forsberg nearly doubled the lead for Die Roten Bullen just a couple of minutes later but Steffen was equal to his fierce strike, before the American produced a great reaction save to deny Silva from point-blank range.
A quiet second half sparked into life when John Stones gave the ball away in the middle of the park, sparking a quick Leipzig counter attack which was eventually buried by Silva.
City thought they should have had a penalty when Raheem Sterling went to ground under a heavy challenge from Josko Gvardiol, but it didn't matter as they pulled one back moments later anyway. Oleksandr Zinchenko's deep cross was headed back across goal and into the net by Riyad Mahrez for his fifth Champions League goal of the season.
Pep Guardiola's side had their tails up, but were brought crashing back to Earth again when Kyle Walker received a straight red card after booting Silva violently in the ankles.
De Bruyne had a curling effort go just wide of the post late on but that was as close as City came to finding an equaliser and Leipzig secured their place in the Europa League.
Man City player ratings
1. Goalkeeper & defenders
Zack Steffen (GK) - 9/10 - Quick off his line and made several good stops. Would have done exceptionally well to stop Szoboszlai from rounding him.
Kyle Walker (RB) - 0/10 - At fault for the opener and received a stupid, stupid red card to rule him out of the first leg of City's last 16 tie.
John Stones (CB) - 2/10 - Left Szoboszlai with an acre to run into for the opener, though probably wouldn't have mattered as much if Walker was alert to the danger. But the second goal was definitely on him, selling Fernandinho woefully short.
Nathan Ake (CB) - 5/10 - Didn't necessarily do much wrong but he just doesn't have the aura of City's other centre-backs.
Oleksandr Zinchenko (LB) - 7/10 - Drifted infield quite a bit to help win the possession battle. Terrific assist to top his night off.
Fernandinho (DM) - 5/10 - Up for the fight but looked a bit leggy and relied on Zinchenko to do some of the sweeping in midfield.
Kevin De Bruyne (CM) - 6/10 - Played a lot more like his old self again in the first half, carving Leipzig open with ease. Wore down as the game went on.
Ilkay Gundogan (CM) - 6/10 - Caught on the ball a couple of times and didn't have the physicality to hang in the midfield battle. Found joy roaming forward and probing between the lines.
Riyad Mahrez (RW) - 7/10 - Made some good runs that went unnoticed but was quiet regardless until the goal.
Jack Grealish (CF) - 3/10 - Just isn't a number nine - natural or false. Shifted out wide eventually and looked more comfortable.
Phil Foden (LW) - 7/10 - One of City's best outfielders in the first half, giving Leipzig several headaches with his ability to play as a natural winger, wide forward and inverted playmaker. Hooked at half time.
Raheem Sterling (LW, 46' for Foden) - 6/10 - One of City's more lively players after coming on but didn't have much luck in front of goal.
Cole Palmer (CM, 87' for De Bruyne) - N/A
Ruben Dias (CB, 87' for Ake) - N/A