BAYERN MUNICH 2 MAN CITY 3
BAYERN: 1. Manuel Neuer 21. Philipp Lahm 17. Jerome Boateng 4. Dante 27. David Alaba 6. Thiago 25. Thomas Muller 19. Mario Gotze 55' 39. Toni Kroos 7. Franck Ribery 9. Mario Mandzukic 68'
Subs: 22. Tom Starke 5. Daniel Van Buyten 8. Javi Martinez 55' 11. Xherdan Shaqiri 68' 13. Rafinha 14. Claudio Pizarro 26. Diego Contento
MAN CITY: 1. Joe Hart 2. Micah Richards 15' 26. Martin Demichelis 6. Joleon Lescott 13. Aleksandar Kolarov 14. Javi Garcia 25. Fernandinho 15. Jesus Navas 21. David Silva 73' 7. James Milner 10. Edin Dzeko 88'
Subs: 30. Costel Pantilimon 4. Vincent Kompany 5. Pablo Zabaleta 15' 9. Alvaro Negredo 73' 16. Sergio Aguero 17. Jack Rodwell 88' 38. Dedryck Boyata
Both sides had already qualified for the knockout stage before this match, which was their concluding Group D fixture, and for second-placed City to overhaul defending champions Bayern and secure first position, it required them to win here with a better scoreline than 3-1 - that by which the German outfit beat them at the Etihad Stadium.
It appeared an unlikely prospect before and a virtual impossibility soon after kick-off as Bayern ripped through a helpless-looking City defence and raced into a 2-0 lead, with Thomas Muller striking in the fifth minute and Mario Gotze in the 12th.
Three minutes later the visitors had to substitute Micah Richards for Pablo Zabaleta, but their fortunes improved considerably from there as the game went on.
Having steadied the ship, City hit back through David Silva's close-range finish in the 28th minute and they then scored two second-half goals in quick succession to complete an incredible turnaround, with Aleksandar Kolarov converting a 59th-minute penalty before James Milner's cool finish three minutes later.
And while it was ultimately not sufficient for the Blues to take top spot, they have certainly made a statement about their credentials ahead of the next phase.
Boss Manuel Pellegrini had made it clear pre-match that, at the very least, he wanted a considerable improvement from City on their display in the initial meeting, in which they were completely outplayed by Bayern for much of the contest.
It looked in the early stages as if the Blues were set for an even more chastening experience but overall City delivered the kind of thing their manager had been looking for - and they might have even scored a further goal that would have sent them top if Manuel Neuer had not been alert to stop substitute Alvaro Negredo late on.
Pellegrini had also admitted in the build-up to the match that he was preparing for it with Saturday's Barclays Premier League home clash against table-toppers Arsenal also in mind, and his team selection reflected that.
The Blues' first XI showed seven changes from last weekend's draw at Southampton, with Joe Hart, Richards, Joleon Lescott, Javi Garcia, Jesus Navas, Edin Dzeko and the fit-again Silva being brought into it and the likes of Vincent Kompany, Zabaleta, Sergio Aguero, Negredo and Samir Nasri dropping out - the first four to the bench - as well as the suspended Yaya Toure.
For Bayern, meanwhile, there were just two alterations from their 7-0 win at Werder Bremen, and their potency was soon evident.
Hart, making only his second appearance in 10 City games, had already endured a nervy moment due to a miscued attempted backpass from Lescott when Muller put Bayern 1-0 up.
The forward chested down a lofted delivery from Dante, got the better of City's skipper-for-the-night Kolarov and fired past the England goalkeeper.
Hart got down to save a Dante header four minutes later, and then diverted the ball, struck by Franck Ribery, against the post, but it was not long before he was beaten again as Bayern kept up the heat.
City made a hash of trying to deal with a corner and the ball ricocheted via Mario Mandzukic's shot to the feet of Gotze, who converted from six yards out.
Richards limped off for Zabaleta soon after and there was further Bayern pressure to weather, with Ribery's shot being blocked and Hart denying Toni Kroos.
But then Fernandinho fired off-target at the other end and with City having settled down, Silva - back after six games out due to a calf problem - hooked in to make it 2-1, connecting with a Milner header from Navas' cross.
Navas put the ball into the side-netting within moments and it was a fairly even contest for the rest of the first half, although there were a couple of warnings from the hosts, with Hart having to come out to keep Gotze at bay and City's ex-Bayern man Martin Demichelis getting in the way of a Muller shot.
City made a solid opening to the second half and after Dzeko had called Neuer into action, Dante brought down Milner in the area and the penalty was awarded.
Kolarov made no mistake from the spot and then City were in front as Milner swept in a Navas cross which former Blues defender Jerome Boateng attempted to hack away but completely missed.
City kept pushing and sloppiness from Dante allowed Negredo the opportunity to make it 4-2 with 11 minutes to go, but Neuer saved.
Manchester United 1 Shakhtar Donetsk 0
Bayern Munich 2 Manchester City 3
Real Sociedad 0 Bayer Leverkusen 1
FC Copenhagen 0 Real Madrid 2
Galatasaray A-A Juventus
Benfica 2 PSG 1
Olympiacos 3 Anderlecht 1
Plzen 2 CSKA Moscow 1