Hertha Berlin 0-2 Schalke
Adam Szalai (26') and Julian Draxler (90') scored the goals as Schalke won away from home.
Hertha took 18 shots, including nine on target, but couldn't beat Schalke keeper Timo Hildebrand.
Braunschweig 1-0 Bayer Leverkusen
Braunschweig's Domi Kumbela scored the game's only goal nine minutes from time as high-flying Bayer Leverkusen lost for the second time this season.
The hosts had Lars Bender sent off in the 90th minute for his second bookable offence.
With the loss, Leverkusen fell three points behind second-placed Borussia Dortmund. Braunschweig remained bottom of the table but moved level with Nurnberg on seven points.
Hamburg 0-2 Borussia Monchengladbach
Max Kruse scored either side of half-time to give Borussia Monchengladbach all three points at Hamburg.
Kruse opened the scoring in the 23rd minute and doubled Gladbach's lead in the 63rd. Rafael van der Vaart hit the woodwork for Hamburg.
The win sent Gladbach into fourth place with 19 points.
Nurnberg 0-3 Freiburg
Despite having a player sent off, Freiburg scored three times in the second half to win 3-0 at Nurnberg.
Felix Klaus opened the scoring in the 57th minute, but then Freiburg had Oliver Sorg sent off 13 minutes later for his second bookable offence.
But Freiburg responded with late goals from Vladimir Darida (79') and Admir Mehmedi (88') to seal the points.
With the win, Freiburg jumped over Nurnberg into 16th place. Both clubs remain in the relegation places.
Eintracht Frankfurt 1-2 VfL Wolfsburg
Maximilian Arnold hit an 82nd-minute winner as VfL Wolfsburg took all three points at Eintracht Frankfurt.
An own goal put Wolfsburg ahead in the second minute, but Frankfurt equalised 10 minutes before half-time through Alexander Meier.
Wolfsburg, who won their third straight league match, moved up to fifth. Stuttgart, who are winless in six league matches, are 14th.