Borussia Dortmund gave their Bundesliga title defence a major boost after beating leaders Bayern Munich 1-0 at the Allianz Arena to reduce the deficit at the top of the table to two points.
A goal from Mario Gotze early in the second half was enough to inflict a second home defeat on Bayern, who lost by the same scoreline to Borussia Monchengladbach on the opening day of the season.
Both Dortmund and Gladbach are now Bayern's closest challengers in the table with just two points separating the Bavarians from the two Westphalian sides with four games to go before the winter break. Schalke eased into third place in the Bundesliga with a 4-0 win over Nurnberg at the Arena AufSchalke.
Klaas Jan Huntelaar put the Royal Blues on their way to victory in the 13th minute and Raul added a second just before the break.
Huntelaar then made it three midway through the second half before Lewis Holtby completed the rout six minutes from time. Marco Reus scored a hat-trick as Borussia Monchengladbach eased past 10-man Werder Bremen 5-0 to continue their superb home form.
Patrick Herrmann opened the scoring in the 16th minute and then Reus made it 2-0 after 23 minutes. The German international struck again in the 38th minute and the 51st minute to make it 4-0.
Juan Arango's superb strike made it 5-0 in the 53rd minute before Werder went a man down in the 76th minute as Sokratis was sent off.
Gladbach extended their undefeated streak at Borussia Park to 10 games - the longest stretch in the Bundesliga. Stefan Reisinger scored the equaliser five minutes into injury-time as Freiburg drew 2-2 at home against Hertha Berlin.
Adrian Ramos gave Berlin the lead after 20 minutes and the guests led 2-0 after Peter Niemeyer's goal a minute into first-half injury-time.
Reisinger pulled a goal back for Freiburg in the 61st minute before his late heroics.
Freiburg's win follows their victory over Nurnberg which had ended a three-game losing streak to take them to 11 points. Hertha have collected just one win in their last five games to sit on 17 points. Hasan Salihamidzic scored two goals in a Bundesliga match for the first time in more than ten years as Wolfsburg grabbed a crucial 4-1 home victory over 10-man Hannover.
Salihamidzic scored in the 22nd and 36th minutes to give Wolfsburg a 2-0 lead. Christian Schulz pulled a goal back in the 43rd minute.
Chris gave Wolfsburg a two-goal lead again after 56 minutes and then Hannover went a man down two minutes later as Didier Ya Konan was shown a red card. Alexander Madlung finished off the game with a goal in the 74th minute.
In the process, Wolfsburg collected just their second victory in the last six games to improve to 16 points. Hannover remained on 19 points with their third defeat in the last five games.