Bundesliga matchday 31 in pictures
In a dramatic Bundesliga matchday rife with battles to avoid the drop and to reach European spots, Schalke were the stars. Paderborn and Hamburg picked up vital wins at the bottom of the league.
Schalke leave it late against Stuttgart
On Huub Stevens' return to Schalke, both sides were in need of wins for different reasons. Schalke went into a lead thanks to Klass-Jan Huntelaar, before Stuttgart turned to game around thanks to Martin Harnick and Filip Kostic. However, Schalke weren't done. A second from Huntelaar before a late Kevin-Prince Boateng game-winner snatched the points from Stevens' side.
Paderborn still alive
Having dropped to the foot of the Bundesliga table for the first time this season last week, Paderborn knew they needed something special travelling to fellow strugglers Freiburg. A brace from substitute Lukas Rupp turned the game around after Nils Petersen had put the hosts ahead.
Hannover claws back at Wolfsburg
Fourteen games without a win would give most Bundesliga clubs the feeling of an impossible task to get three points. Travelling to German Cup finalists Wolfsburg and going behind two goals before half-time - the cards were stacked against Hannover. But the plucky 96ers scored two early second-half goals through Jimmy Briand and Salif Sane to grab a vital point.
Dortmund and Hoffenheim draw
In the battle at the top - almost - between Borussia Dortmund and Hoffenheim, both sides could do with beating each other to keep hopes of a Europa League place alive. After Kevin Volland's scorching opener, Mats Hummels levelled minutes later. The two sides couldn't be separated in what was a competitive encounter.
Selke seals Bremen win
As Thomas Schaaf returned to his old club Werder Bremen, Frankfurt was looking for a first win since top goalscorer Alexander Meier's season-ending injury. In a tight affair, an innocuous goal from Leipzig-bound Davie Selke snatched the three points for the home side. It was not the homecoming Schaaf had wished for.
The less said the better at Augsburg
As the title suggests, the less said about this match the better. It took 70 minutes before Cologne had a shot on goal, as Augsburg went in search of a win to maintain its European push. A ninth goalless draw involving the Billy Goats this season.
Leverkusen cruise against Bayern
Against a weakened Bayern Munich side looking ahead to its Champions League semifinal against Barcelona next week, Bayer Leverkusen took full advantage to move into third position in the Bundesliga. A superb Hakan Calhanoglu free-kick followed by a Julian Brandt strike send the Bundesliga Champions to Spain on the back of a defeat.
Hamburg snatch vital win in Mainz
After a stunning win against Augsburg last weekend, Hamburg was in search of a second consecutive win for only the second time this season. It was the perfect start, when Julian Baumgartlinger put into his own goal for a HSV lead. Not until the second half did Mainz level, through substitute Yunus Malli. However, through Gojko Kacar, Hamburg stole all three points in the final minutes.
Traore keeps Gladbach in third
After two goals in the space of three first half minutes, it was left until the 85th minute to see a winner between Borussia Mönchengladbach and Hertha Berlin. Substitute Ibrahima Traore grabbing the three points with a superb curling effort. It was Lucien Favre's 100th win as a Bundesliga coach.