Also, Borussia Moenchengladbach joined RB Leipzig at the top of the table with a 2-0 win over Paderborn.
Bayern Munich, who moved up to third in the table, got off to a strong start.
They hit the post through Thomas Mueller before Robert Lewandowski’s 19th league goal of the season gave them the lead in the 16th minute.
Freiburg, however, gradually gained control of the midfield, attacking with greater ease as the Bavarians were punished once more for their complacency.
Vincenzo Grifo volleyed in to level on the hour, completing a superb attacking move from the hosts, who missed several more scoring chances as the Bayern Munich defence looked shaky.
Late substitute Zirkzee, the 18-year-old Dutch youth international, then slipped into the box and slotted in from close range before Gnabry added another.
Bayern Munich are third on 30 points, ahead of fourth-placed Borussia Dortmund on goal difference.
Second half goals from Alassane Plea and Lars Stindl gave Glabdach a comfortable 2-0 win over visiting Paderborn and lifted them to 34 points, second on goal difference behind RB Leipzig.(Reuters/NAN)