Defending champions Borussia Dortmund blew the Bundesliga title race wide open with a 1-0 win over current leaders Bayern Munich.
Dortmund reduced Bayern's lead at the top of the Bundesliga down to two points when Germany star Mario Gotze scored the winner at Bayern's Allianz Arena in a tense game.
"That was really good, really hard work," said Dortmund coach Jurgen Klopp, who leapt into the air on the final whistle. "You have to play like that if you want to pick up any points here. You don't get anything by just playing at 95 per cent."
Bayern, who host Villarreal on Tuesday in the UEFA Champions League, started with Dutch playmaker Arjen Robben, for the first time since groin surgery in October, but still suffered their second defeat at home to Dortmund this year. "We didn't get close enough to them," said disappointed Bayern coach Jupp Heynckes after his side also lost 3-1 in Munich to Dortmund in February.
After playing a double pass with Japan winger Shinji Kagawa, Goetze got the better of Bayern's Germany defender Jerome Boateng and drilled his shot past goalkeeper Manuel Neuer on 65 minutes.
The win is a huge confidence boost for Dortmund who take on Arsenal at the Emirates Stadium in the Champions League on Wednesday.
Reus hat-trick for Gladbach
Dortmund claim second only by virtue of goal difference after Borussia Moenchengladbach Marco Reus scored a hat-trick in the 5-0 hammering of Werder Bremen to join Borussia on 26 points with Bayern on 28.
Like Goetze, Reus is one of Germany's rising stars and his three goals left him with seven in his last three league games and ten from 13 Bundesliga matches this season.
Schalke moved up to fourth after Dutch striker Klaas-Jan Huntelaar scored twice and captain Lewis Holtby and Raul scored the others in the 4-0 win over Nurnberg.
Ten-man Hannover dropped to seventh in the league after they were hammered 4-1 at Wolfsburg as Ivorian striker Didier Ya Konan was sent off for unsporting conduct after throwing the ball at Japan's Makoto Hasebe in the 58th minute.
Hertha Berlin were held to a 2-2 draw at Freiburg, who equalised in the 95th minute through midfielder Stefan Reisinger. Finally, Bayer Leverkusen secured a 2-0 win over Kaiserslautern with Michael Ballack getting on the scoresheet.