Hannover handed Bayern Munich their third defeat in seven days to pile the pressure on under-fire Bavarians boss Louis van Gaal. The 3-1 victory sees Die Roten climb above Bayern into third in the Bundesliga table.
Mohammed Abddellaoue put Hannover in front in the 16th minute and Konstantin Rausch added a second early in the second half. Arjen Robben pulled one back for Bayern almost immediately, but Sergio Pinto's goal in the 62nd minute ended their hopes of recovering.
Bayern defender Breno was sent off in the 73rd minute, possibly pre-empting the red card the club's bosses are preparing to show to Van Gaal, whose side have now fallen five points adrift of third place and the minimum aim of a place in the Champions League next season.
Bayer Leverkusen swept past Wolfsburg with an emphatic 3-0 win to regain second spot.
All three goals came in the first half as Jupp Heynckes' side responded well to Hannover's win to move back above them and remain on course for a place in the Champions League next season.
Lars Bender put the home team ahead in the 21st minute with Renato Augusto adding a second eight minutes later. Stefan Kiessling completed the scoring in first-half stoppage time to leave the Wolves just one point above the relegation zone.
Zdravko Kuzmanovic's early penalty was enough for Stuttgart to hold on and beat ten-man Schalke 1-0 to leave the relegation zone. Kuzmanovic converted from the spot in the 15th minute shortly after Benedikt Howedes was given his marching orders with a red card.
Stuttgart collected their second straight victory to improve to 25 points for 15th place, while Schalke have just one victory in their last six games - with their 11th loss of the season leaving them with just 30 points in 10th place, five points from the drop zone.
Christian Eigler scored four times as Nurnberg continued their march up the Bundesliga table by handing St Pauli a 5-0 thrashing. Philipp Wollscheid put Nurnberg ahead after three minutes before Eigler, who was only starting because of an injury to top-scorer Julian Schieber, struck in the 14th and 17th minutes. He completed his hat-trick in the 86th minute and added a fourth a minute later.
Nurnberg have now won five and drawn two of their last seven games and Saturday's win moved them up to sixth place. St. Pauli are heading in the opposite direction, having lost their last three matches without scoring, and dropped to 13th, just three points from the relegation zone.
Igor de Camargo scored one goal and set up another within five minutes as Borussia Monchengladbach earned a crucial 2-0 home victory over Hoffenheim in their fight against relegation.
Filip Daems converted a penalty for Gladbach in the 65th minute and De Camargo doubled the score in the 70th minute. Last-placed Gladbach have two wins in their last three games to jump to 22 points - three points from a safe spot. Hoffenheim have not won in four matches to remain on 33 points for ninth place
Eintracht Frankfurt, meanwhile, played out a 0-0 draw with Kaiserslautern.