Bayern Munich crumbled to lose from two goals up at Heidenheim and all but hand Bayer Leverkusen the Bundesliga title.
Harry Kane's 32nd league goal of the season and Serge Gnabry's header put Bayern in total control at half-time.
However, Heidenheim scored twice within two minutes to level through substitute Kevin Sessa and Tim Kleindienst.
With Leverkusen en route to victory in Berlin, Bayern pushed for a winner but Kleindienst caught them on the break to earn the hosts a famous triumph.
Defeat means Bayern slip 16 points behind Leverkusen with six games to play - and Xabi Alonso's side can clinch a first-ever Bundesliga title with a win at home to Werder Bremen next weekend.
Bayern boss Thomas Tuchel had already conceded the title race was over after his team's loss at home to Borussia Dortmund seven days earlier.
But they extinguished any slight glimmer of hope with a wretched second-half display featuring wastefulness up front and naivety at the back.
Kane had produced a typically clinical finish to sweep home a lofted pass from Gnabry, who then nodded home Alphonso Davies' cross to double the lead.
But the England striker spurned chances to put the visitors back in front after Heidenheim's quick-fire double punished inexplicable gaps in the Bayern backline.
Kleindienst fired home Marvin Pieringer's square ball to complete the turnaround, to which a clearly deflated Bayern had no answer.
Comments