Bayer Leverkusen moved within three points of their first Bundesliga title after beating Union Berlin, while rivals Bayern Munich lost again.
Leverkusen beat Union Berlin 1-0 on Saturday to extend their league-record unbeaten run to 28 games and move 16 points clear at the top of the table with six games remaining.
Florian Wirtz sent Frederik Ronnow the wrong way from the spot to give the hosts a lead they never really threatened.
Bayern Munich, meanwhile, were cruising at half-time thanks to goals from Harry Kane and Serge Gnabry but conceded three times in the second half to fall to a second successive defeat.
Despite missing a number of injured first-team players, including captain Manuel Neuer, Leroy Sane and Kingsley Coman, Bayern looked in good form early on, with coach Thomas Tuchel taking a cautious approach ahead of Tuesday’s Champions League trip to Arsenal.
With Bayern losing at Heidenheim, Leverkusen could win the title next week if they win and the Bavarian giants lose.
Leverkusen remain on course for a remarkable treble, having reached the German Cup final in midweek by thrashing Fortuna Dusseldorf 4-0 and they now prepare for the visit of West Ham in the Europa League quarter-final first leg on Thursday.
Also Read: Bayern Munich Title Race on The Verge After Defeat By Borussia Dortmund