Bayer Leverkusen are just three points from a first Bundesliga title after a 1-0 win at Union Berlin on Saturday, with Bayern Munich letting a two-goal lead slip in a 3-2 loss at Heidenheim.
Bayern were cruising at half-time thanks to strikes from Harry Kane and Serge Gnabry but conceded three times in the second half, losing their second match in a row.
Florian Wirtz converted a penalty deep into first-half stoppage time as Leverkusen were made to work hard in the German capital against 10-man Union, extending their unbeaten run this season to 41 games.
Xabi Alonso’s side need just three points from their remaining six matches to clinch a first league title in the club’s history.
Bayern, on a streak of 11 straight Bundesliga titles, could relinquish their crown next week in between the first and second legs of their Champions League quarter-final against Arsenal.
Union did their best to hold on despite Leverkusen’s relentless pressure but gave way just before half-time, Germany defender Robin Gosens picking up a second yellow for a desperation tackle on Nathan Tella near the penalty box.
After some chaotic scenes from the ensuing free-kick the ball connected with the arm of Union captain Christopher Trimmel, giving Leverkusen a penalty after a long VAR review.
Wirtz calmly dispatched the penalty, his third goal in his past two games.