David Alaba scored twice as Bayern Munich extended their lead at the top of the Bundesliga to 15 points with an 4-0 thrashing of struggling Schalke.
Alaba opened the scoring from the penalty spot in the 19th minute and then made it 3-0 at the start of the second half after Bastian Schweinsteiger had doubled Bayern's lead with a free-kick.
Mario Gomez completed the rout in the 63rd minute as Bayern took full advantage of second-placed Borussia Dortmund's surprising 4-1 home defeat to Hamburg.
Dortmund's day started well, when Robert Lewandowski put the hosts ahead after 17 minutes but things went wrong quickly as Artjoms Rudnevs and Son Heung-min put Hamburg ahead in an eight-minute burst.
Lewandowski was then dismissed in the 31st minute and Dortmund never got back on track.
Jeffrey Bruma was sent off in the 59th minute to even the numbers but Hamburg continued to impress and widened the margin of victory as Rudnevs and Son both scored again in the second half.
Third-placed Bayer Leverkusen failed to capitalise as Patrick Herrmann grabbed a late equaliser to seal a 3-3 draw for Borussia Monchengladbach.
Gladbach twice pulled ahead through Martin Stranzl and Luuk de Jong in the 44th and 58th minutes but Leverkusen equalised through Sidney Sam in the 52nd minute and Stefan Kiessling on the hour.
Andre Schurrle gave Leverkusen the lead for the first time in the 64th minute only to see Herrmann equalise for Gladbach four minutes from time.
At the wrong end of the table, Wolfsburg defeated rock-bottom Greuther Furth 1-0 courtesy of Bas Dost's 23rd-minute goal and third bottom Hoffenheim lost 1-0 at Hannover. Mame Biram Diouf was the scorer in that match.
Mehmet Ekici scored twice as Werder Bremen saw off Stuttgart 4-1.
Ekici's first goal in the 34th minute was cancelled out by Ibrahima Traore in the 50th minute. But Aaron Hunt restored Bremen's lead before Ekici added his second in the 74th and Kevin de Bruyne sealed maters in in stoppage time.
In the day's remaining fixture Nurnberg drew 0-0 at Frankfurt.
On Sunday, Sascha Molders scored a second-half equaliser as Augsburg picked up a valuable point in their battle to retain their Bundesliga status with a 1-1 home draw against 10-man Mainz.
Adam Szalai had put Mainz ahead two minutes before the interval, but the visitors were reduced to 10 men in first-half stoppage time when Shawn Parker was sent off for a bad tackle on Augsburg substitute Michael Parkhurst.
The hosts soon capitalised on their extra man, Molders restoring parity 12 minutes after the restart, but they could not force a winner.
Pavel Krmas scored late in the game to hand Freiburg a 1-0 victory over Fortuna Dusseldorf, a result that lifted the host to fifth place in the Bundesliga.
Krmas converted the only goal of the match - only Freiburg's second in four matches since the winter break - in the 87th minute.
The home side hit the post before and after that goal as they had the best of chances.
Victory took Freiburg to 31 points, level with Mainz and Hamburg, while Dusseldorf remained on 24 points, eight clear of the drop zone.