UEFA Champions League: Bayern 2 Man City 3
Both teams had already secured qualification from Group D and Manuel Pellegrini's decision to select second-string players such as Milner appeared to have backfired as the European and German champions overwhelmed his team in the opening stages.
Thomas Muller and Mario Gotze were on target to hand Bayern a 2-0 lead after 12 minutes, and City were fortunate not to be further behind as their defence flailed under the onslaught.
But they earned a route back into the match when David Silva marked his return from a calf injury by converting Milner's downward header and the same player won a penalty for Aleksandar Kolarov to equalise in the 59th minute.
The England midfielder then netted clinically as superb Spanish duo Silva and Jesus Navas unlocked a Bayern team who were improbably denied an 11th straight UEFA Champions League win.
Vincent Kompany, Sergio Aguero, Alvaro Negredo, Yaya Toure and Samir Nasri were missing from a City XI that showed Pellegrini had one eye on Saturday's crunch Premier League clash against Arsenal.
Bayern were much closer to full strength and a gulf in class was quickly apparent.
City barely left their half in the opening stages and it was little surprise when Muller caught Kolarov napping to clinically convert Dante's raking pass.
Franck Ribery then struck the post following a botched Joleon Lescott clearance, before Gotze prodded home from close range to capitalise on another City defensive error.
The visitors' nightmare start took another turn for the worse as Micah Richards hobbled out of the action with a suspected hamstring problem and was replaced by Pablo Zabaleta.
Pellegrini's men tentatively emerged from their early struggles and Silva reduced the arrears when Milner showed excellent endeavour to knock Jesus Navas' right-wing cross back across goal for a simple 28th-minute finish.
City proceeded to play their part in a more even contest shortly before the break, but Joe Hart was called upon to thwart Gotze in the 43rd minute before former Bayern defender Martin Demichelis salvaged a wretched individual half by producing a last-ditch tackle to deny Muller.
Edin Dzeko stung Manuel Neuer's palms in the 51st minute after Silva and Milner had linked nicely down the Bayern right.
The same combination caught Bayern out again six minutes later and referee David Fernandez pointed to the spot as Dante clumsily sent Milner tumbling. Kolarov coolly converted.
And Milner continued a superb evening with a measured finish across Neuer from Navas' centre as Silva picked Bayern apart once more.
City then threw on Alvaro Negredo in place of his international colleague Silva and the bustling striker capitalised in an error from the clearly rattled Dante, leaving Neuer's outstretched boot to preserve Bayern's top spot in the group.