Though we were already assured of top spot and a place in the last-16 draw, a City side showing seven changes from the team that won at Watford on Saturday, strove to try and end the group stage on a winning note.
However Dominik Szoboszlai and Andre Silva struck in both halves to power a fired-up Leipzig into a two-goal lead.
Though Riyad Mahrez set up a grandstand finish with a fine stooping header on 76 minutes, City couldn’t force a leveller.
And the match ended with Kyle Walker being sent off for foul play nine minutes from time to seal a disappointing night in eastern Germany.
There were echoes of last season with the game at Leipzig’s impressive RB Arena being played behind closed doors due to safety concerns over rising COVID-19 cases in Germany.
Leipzig had gone into the Group A finale having made a managerial change at the weekend with Jesse Marsch having been replaced on a temporary basis by interim boss Achim Beierlorzer.
But, seeking a third placed finish in Group A to secure place in the Europa League, just as they had at the Etihad back in September, the German side proved impressive and dangerous opponents
City keeper Zack Steffen, offered a Champions League opportunity by Pep Guardiola, had to demonstrate his quality on 16 minutes, diving low to his left to superbly deny Konrad Laimer’s goalbound shot at the near post after the ball had rebounded to him off Fernandinho.
Steffen then impressed again by getting a strong hand to the ball to deny Andre Silva after Leipzig had broken in numbers with Christopher Nkunku threading through Silva in behind the City defence.
But it was Leipzig whose pressure resulted in the breakthrough on 25 minutes.
Leipzig danger man Laimer threaded a precise ball through the centre of City’s back line and found Dominik Szoboszlai in behind.
The Hungarian rounded Steffen and tapped home into an empty net, the goal allowed to stand after a VAR check.
Within two minutes, it almost got worse for City. Emil Forsberg ghosted in at the back post from Silva's right-wing cutback and Steffen needed to be alert once again to block the Swede’s shot.
And the American international then produced a quite stunning block to deny Silva’s point-blank range header from Szoboszlai’s cross field header after another lightning raid by the hosts.
City then served up a reminder of our quality as a low Phil Foden drive was tipped onto the post by Leipzig keeper Peter Gulacsi.
Gulacsi flung to his right to deny De Bruyne’s goal-bound free-kick as City sought to summon up a response.
There was more intensity to our attacking play but Leipzig continued to prove tough to break down with their high pressing and energy still evident.
Grealish almost latched onto an inviting Fernandinho long ball on 70 minutes only for Leipzig keeper Gulacsi to race out and deny the City man.
And within 60 seconds, a tough task got even harder.
Forsberg drove at the heart of the City defence before finding Silva 15 yards out and the Portuguese striker made no mistake drilling home a low shot.
City looked to have a reasonable shout for a penalty turned down after Sterling appeared to be man handled in the box by Gavardiol.
But 14 minutes from time City did find the target through a superb Mahrez header.
The Algerian latched on to a brilliant curling cross from Zinchenko and stooped to guide home a fine header for his fifth goal in six group games.
Grealish then saw a low shot deflected as we sought to level affairs.
But, with tempers spilling over, City’s task got even harder when Kyle Walker was shown a red card for a late challenge on Andre Silva to set the seal on a night of frustration.
Hand it to Zack
Afforded his first Champions League start of the season, City keeper Zack Steffen provided another reminder of his quality and sharp-eyed focus.
The American was a tower of strength at the RB Arena making a series of vital interceptions – especially in the first half – to keep Leipzig at bay.
Having signed a new City contract earlier this season, the 26-year-old again showed why he is regarded as such a key part of Pep Guardiola’s squad.
And though the game may have ended in defeat, this was another demonstration that he is a quality act in his own right and a huge asset to our goalkeeping armoury.
RB Leipzig: Gulacsi, Mukiele, Gavardiol, Angelino, Klostermann (Simakan 45), Laimer (Adams 63), Szoboszlai, Kampl, Nkunku, Forsberg, Silva
Subs: Martinez, Henrichs, Moriba, Brobbey, Bonnah
City: Steffen, Walker, Stones, Ake (Dias 86), Zinchenko, Fernandinho ©, Gundogan, De Bruyne (Palmer 86), Grealish, Foden (Foden 45), Mahrez
Subs: Ederson, Carson, Egan-Riley, McAtee, Lavia, Wilson-Esbrand
"We played better in the second half, more aggressive, we played to win the game and we lost it so congratulations to Leipzig.
"In the first half we lacked rhythm, we had problems to contact and they had a really good team, we knew before group stage but second half much better.
"Unfortunately we were punished with one or two mistakes."
What it means
Despite the result, City go into next Monday’s draw as Group A winners.
Pep Guardiola’s side again demonstrated quality and consistency apace throughout our group campaign with a series of impressive performances.
The only frustration was that we weren’t able to end on a winning note at the RB Arena.
Despite that however there is no doubt that we will be a side many will be keen to avoid.
City return to Premier League action on Saturday when we play host to Wolves at the Etihad seeking what would be a sixth straight Premier League success as we see to retain top spot.
Kick-off is at 12.30pm and, as always, we’ll have full match coverage in our Matchday Centre here on mancity.com and our official app.
News about Leipzig v Man City"
Guardiola provides injury update on Ake and Foden
Manchester City boss Pep Guardiola provided an update on the injuries suffered by Phil Foden and Nathan Ake during Tuesday's Champions League defeat to RB Leipzig. Watch more
Training: RB Leipzig recovery session
The best images from a light recovery session at the City Football Academy following Tuesday's Champions League clash... View more
Highlights: RB Leipzig 2-1 City
City suffered a first Champions League loss of the season as we went down 2-1 away at RB Leipzig in our Group A finale. Watch more
Guardiola hails group stage progress despite Leipzig loss
Pep Guardiola insisted that Tuesday’s 2-1 Champions League loss at RB Leipzig should not detract from what he termed City’s ‘incredible’ overall group stage progress. Read more
Zinchenko calls for reaction to Leipzig setback
Oleksandr Zinchenko hopes that City can use the lessons from our 2-1 defeat to RB Leipzig to get back to winning ways in Saturday’s Premier League clash with Wolves. Watch more
RB Leipzig v City: Full-match replay
Relive the entire 90 minutes of our final Champions League Group A match via CITY+... Watch more