However, RB Leipzig denied the reigning champions a place at the top of the table with their comeback win over Augsburg.
Dutch teenager Zirkzee, who also scored in stoppage time in their 3-1 midweek win over Freiburg, slotted in three minutes after coming on as a substitute and Gnabry doubled their lead in the 89th to lift Bayern to 33 points in third place.
Wolfsburg's Maximilian Arnold fired in an injury-time winner to defeat Borussia Moenchengladbach 2-1 on Sunday.
Gladbach had been on top of the Bundesliga table for the last two months, but RB Leipzig moved ahead of them with victory on Saturday night.
The Wolves, in eighth place, showed no respect for Gladbach, enjoying their best season since last winning the title in 1977, and hit the post after four minutes with Joao Victor.
Two minutes after that Xaver Schlager fired them into the lead.
Borussia Dortmund's Thorgan Hazard scored one goal and helped to set up another as his team beat VfL Wolfsburg 3-0 on Saturday to snap their unbeaten league run and move into second place, three points behind leaders Borussia Moenchengladbach.
Belgium international Hazard scored on the break in the 52nd minute and then set up Raphael Guerreiro for their second goal six minutes later.
Dortmund, who had to take off captain Marco Reus with a foot injury in the first half, looked livelier than in past...