Eintracht Frankfurt defeated Bundesliga leader Leipzig 2-0 to throw the title race wide open on Saturday.
Frankfurt defender Almamy Toure scored a brilliant goal just after the break and Filip Kostic sealed the win in injury time to deal Leipzig its first defeat since a 2-1 loss at home to Freiburg in October.
Borussia Mönchengladbach cut the gap at the top to two points with a 3-1 win at home over Mainz, thanks largely to goals in each half from French striker Alassane Plea.
Bayern Munich has the chance to cut the gap to one point with a win at home over Schalke in the late game.
Borussia Dortmund is just four points off the top after its 5-1 win over Cologne on Friday.
Also Saturday, Union Berlin defeated Augsburg 2-0 at home, Hertha Berlin came from behind to win 2-1 at Wolfsburg, and Paderborn moved off the bottom with a 2-0 win at Freiburg.