The 18-year-old Dutchman came on in the 90th minute before breaking a 1-1 deadlock, becoming the youngest player to score a goal this Bundesliga season.
Bayern’s Serge Gnabry added another in the final minute of injury time to put the result beyond doubt, crushing the hopes of a dogged and determined home side.
“When you score two goals with just minutes remaining to win the game, of course the bus ride home will have a different feel than if it had gone otherwise,” said Bayern caretaker boss Hansi Flick.
It was business as usual early for Bayern, with Philippe Coutinho’s chip over goalkeeper Mark Flekken cleared off the line after just two minutes.
In the 16th minute, 19-year-old Canadian Alphonso Davies put in a superb cross from the left wing, with Robert Lewandowski on the spot to open the scoring.
It was Lewandowski’s 19th league goal of the season –- and the sixth time he opened the scoring for Munich this campaign.
The goal seemed to calm Bayern, with the Bavarians content to dominate possession without making too many incursions into the Freiburg end.
After the half-time break, Freiburg showed the form that has taken them to sixth in the table, catching Bayern on the counter to create several half chances.
Vincenzo Grifo equalised in the 59th minute, nailing Janik Haberer’s cross to give Bayern keeper Manuel Neuer no chance.
Freiburg had several chances to take the lead as the clock ran down, with Bayern’s players visibly shaken by the home team’s relentless pressing.
– Joy for Klinsmann –
The win sees Bayern go into third place, four points behind Leipzig and Borussia Moenchengladbach.
Flick said he had faith in Zirkzee after some impressive showings on the training pitch.
“I simply thought that when another winger came on he could score –- he is a striker and he shoots well, also in training. He’s been with us (the main team) for three weeks and the development has been noteworthy,” Flick said.
“There were two completely different halves. The first half we could’ve lead two or three to nil, but I must say that Freiburg in the second half played well.”
Moenchengladbach overcame their recent poor form to defeat relegation favourites Paderborn 2-0 through a goal from Alassane Plea and a penalty from Lars Stindl.
Gladbach scored immediately after the break, with Plea’s goal coming just 13 seconds into the second half to make it Gladbach’s best start to the season in 42 years.
Wolfsburg left it late to equalise at home to Schalke, Kevin Mbabu scoring in the 82nd minute to cancel out a 51st minute strike from Ozan Kabak.
In Frankfurt, Cologne continued their excellent recent run of form, beating Eintracht 4-2 through three second-half goals.
After starting the season in terrible form, Cologne have now claimed the same amount of points in their past four games (seven) as they did in the first 12 match days.
Earlier, Jurgen Klinsmann claimed a second straight 1-0 win in charge of Hertha Berlin as Karim Rekik’s second-half goal was enough to beat Bayern Leverkusen.
The three points move Hertha four points away from the relegation zone.
Peter Bosz’s side are seventh after a second straight defeat.
Klinsmann, appointed at the end of November, made one change from Saturday’s victory over Freiburg with Norway midfielder Per Skjelbred starting instead of forward Vedad Ibisevic.
Bosz gave Germany’s Jonathan Tah a first start since November after the defender missed two games due to suspension.
Hosts Leverkusen dominated possession throughout much of the game, but Hertha had the best of the scoring chances, frequently breaking on the counter.
Hertha’s Javairo Dilrosun had the best chance of the first half, with his left-foot shot in the 20th minute agonisingly close to goal.
For the home side, Moussa Diaby looked the most dangerous down the right wing.
The visitors got on the scoreboard in the 64th minute after defender Rekik made the most of a second shot at goal after his first effort was kept out by goalkeeper Lukas Hradecky.