Schalke beats second place Dortmund
Julian Draxler got the home team on their way to victory in the 11th minute with Klaas Jan Huntelaar doubling their advantage 10 minutes before the break.
The defending champions tried to respond in the second half, but only had a Robert Lewandowski consolation goal to show for their efforts as the gap between them and Bayern Munich at the top of the table grew even further.
Andreas Ivanschitz netted the game's only goal from the penalty spot in the 61st minute to lift the hosts to sixth spot.
The win ended a run of four straight draws for Mainz, who have lost just once in the last nine matches, while Leverkusen saw their four-match unbeaten streak ended and remained a point adrift of Dortmund.
Max Kruse put Freiburg ahead in the second minute, but an own goal from Cedric Makiadi and fine strikes from Vieirinha and Ivica Olic turned the game on its head within 20 minutes.
Olic's second gave Dieter Hecking's side an even more comfortable lead after the break before Johannes Flum scored a second for the home team, who dropped out of the top six as a result of their loss.
Diego added a fifth Wolfsburg goal with the last kick of the game as they opened a nine-point cushion over the relegation zone.
Roberto Firmino gave Hoffenheim the lead in the 10th minute before Joselu made it 2-0 after 16 minutes and Tobias Weis wrapped up the win five minutes into the second half.
Hoffenheim, who came into game as the league's worst away team, jumped to 19 points for 17th place - just two points behind the relegation play-off spot.
Furth have collected just four points at home, scoring four goals in the process, and have just 14 points.
Peniel Mlapa gave Monchengladbach the lead in the 72nd minute but Aleksandar Ignjovski equalised for the visitors just five minutes later.
The draw left Gladbach in eighth place and Bremen, who at least snapped a three-game losing streak - in 13th spot and eight points above the relegation play-off berth.