The gap at the top of the Bundesliga has been cut to five points after Bayern Munich suffered a shock loss at home to Mainz.
The visitors shocked the champions 2-1 at the Allianz Arena, while second-placed Borussia Dortmund took full advantage at Darmstadt by picking up a comfortable 2-0 win.
In Munich, Pep Guardiola’s men struggled for fluency and they found themselves chasing the game after 26 minutes when Jairo Samperio put Mainz 1-0 up.
Arjen Robben equalised for the champions but Munich were undone with just four minutes remaining when Jhon Cordoba settled the contest to keep Mainz in with a real chance of Champions League qualification.
Dortmund took full advantage of their title rivals’ rare slip as Adrian Ramos and Erik Durm scored either side of the half-time break against Darmstadt to put the visitors back within striking distance of Bayern.
Schalke moved into the Europa League qualifying positions with a tight 3-2 win at home to Hamburg.
Nicolai Muller put the visitors a goal to the good after just four minutes but Schalke soon settled and by the 37th minute had their equaliser through Max Meyer.
A red card to Johan Djourou on the stroke of half-time was costly for Hamburg.
Klaas-Jan Huntelaar put the home side ahead after 66 minutes before Alessandro Schopf made certain of the points in the 77th minute, although Gojko Kacar would score a stoppage-time equaliser for the visitors.
Bayer Leverkusen were sent crashing out of the top six with a 4-1 defeat at home against Werder Bremen, who had Claudio Pizarro score a hat-trick.
Borussia Monchengladbach moved into fourth in the table with a 4-0 thrashing of Stuttgart, who are just five points clear of the relegation zone, while Hertha Berlin proved too good at home against Eintracht Frankfurt, prevailing 2-0.
Elsewhere, Hoffenheim beat Augsburg 2-1.