The Bundesliga champions appeared to be home and dry at half time following a dominant display against a youthful Citizens outfit at Miami's Hard Rock Stadium.
Bayern took the lead after just 15 minutes through 19-year-old Meritan Shabani, who was on hand inside City's six-yard box to emphatically head home a Rafinha cross.
Pep Guardiola's afternoon then got even worse as new signing Riyad Mahrez had to be taken off on 27 minutes due to an ankle knock, Bernardo Silva taking the Algerian's place on the pitch.
Silva, however, would go on to spearhead City's comeback as he halved the deficit by weaving into the box and rifling into the far corner of the Bayern net on the stroke of half time.
Silva was the man responsible for the winner on 70 minutes with a similar goal to his first, this time slotting in at the near post to send the City contingent into raptures.
Bayern pressed hard in search of an equaliser in the latter stages of the game but the Premier League giants managed to hang on for their first win of pre-season.
City's next match is the Community Shield clash at Wembley Stadium against Chelsea next Sunday before their Premier League opener at Arsenal on August 12.
BAYERN MUNICH (4-4-1-1): Ulreich; Meier, Alaba, Richards, Rafinha (Gnabry 46'); Coman, Will (Johansson 76'), Shabani, Robben; Ribery (Zylla 85'); Wagner (Zirkzee 70')
MANCHESTER CITY (4-3-3): Bravo; Zinchenko, Laporte (Gomes 67'), Garcia, Humphreys; Foden (Garre 86'), Soares, Bolton (Bernabe 66'), Mahrez (B. Silva 28'), Nmecha, Diaz (Harrison 67')