Both sides lacked a clutch of players recuperating from international tournament commitments, and the excellent Franck Ribery ensured a more seasoned Bayern team enjoyed the better of a first half where City goalkeeper Willy Caballero had to show inspired form.
Guardiola's experimental line-up found their poise after the break, but a deflected effort from Erdal Ozturk proved to be the difference 15 minutes from time.
Bayern were the quickest to settle as they looked to exploit an inexperienced City backline, with Julian Green narrowly failing to get on the end of Juan Bernat's low cross.
City made an impression in the Bayern box with some trademark Guardiola high-pressing, winning the ball back in a dangerous area before new signing Oleksandr Zinchenko had a shot blocked.
Some wonderful 17th-minute interplay from Ribery and David Alaba saw the Austria international draw a fine close-range save from Caballero.
The Argentine goalkeeper was on hand twice more to thwart Green, with the Bayern forward seemingly primed to open the scoring before half-time.
Ribery was one of three Bayern players to make way at half-time and the hosts' potency reduced as a result, with another replacement, Wilfried Bony, giving City a much-needed focal point in attack.
Bony twice went close, but Bayern struck in fortuitous circumstances.
Tosin Adarabioyo's clearance struck the referee on the back, allowing Ozturk to approach the box and shoot from 20 yards, where a decisive deflection off Gael Clichy took the ball into the bottom corner.
Yaya Toure, on for the final 35 minutes, whipped a free-kick just past the post, but City could not pull level.
City head to China for matches against Manchester United and Borussia Dortmund next week, while Bayern also have International Champions Cup duties on the horizon against AC Milan, Inter and Real Madrid.