Robert Lewandowski scored a hat trick as Bayern Munich put eight past Hamburg. There were also victories for Leipzig and Dortmund, but Leverkusen coach Roger Schmidt is under growing pressure after another defeat.
Bayern Munich 8-0 Hamburg
(Vidal 17', Lewandowski 24' pen, 42', 54', Alaba 56', Coman 65', 69', Robben 87')
Bayern Munich scored eight goals without reply in a rout of hapless Hamburg.
Bayern opened the scoring inside 17 minutes when David Alaba, Thomas Müller and then Arturo Vidal combined, with the Chilean driving a low shot beyond Rene Adler.
Robert Lewandowski's penalty after Müller was fouled seven minutes later put daylight between the leaders and the strugglers, and the Pole doubled his tally for the afternoon before the break, scoring on the rebound after Douglas Costa's shot was blocked.
Lewandowski had his hat trick just nine minutes into the second half, stroking the ball into the bottom corner after a beautiful backheel from Arjen Robben created the chance.
Bayern made it five moments later through Alaba, who swept the ball into an empty net after Müller unselfishly squared the ball to his teammate.
Substitute Kinglsey Coman added a sixth, latching onto Mats Hummels' long ball and Johan Djourou's mistake to finish past Adler, and then a seventh – lashing in from the edge of the box after further hesitant defending by Djourou.
Robben completed the rout with a mazy run and finish that made it 8-0 late on.
RB Leipzig 3-1 Cologne
(Forsberg 5', Maroh og 34', Werner 65' - Osako 53')
RB Leipzig kept Bayern Munich in their sights with a deserved 3-1 win over Cologne.
Emil Forsberg drew first blood inside five minutes, waltzing into a shooting position and drilling a low shot under Thomas Kessler in the Cologne goal.
Cologne shot themselves in the foot when some calamitous defending saw them concede another before the break. Naby Keita's dangerous cross caused confusion in the visitors' defence, and Dominic Maroh turned it into his own net.
Leipzig's lead was sliced in half soon after the break when Yuya Osako slid the reach a cross from the right, and steered the ball inside Peter Gulacsi's near post.
A swift counter-attack and fine finish from a tight angle saw Timo Werner restore Leipzig's two-goal cushion, which effectively ended the game as a contest.
Freiburg 0–3 Dortmund
(Sokratis 13', Aubameyang 55', 70')
Pierre-Emerick Aubameyang scored his first goals in five games as Dortmund swept Freiburg aside.
Dortmund went ahead in the 13th minute through Sokratis, who steered the ball in from close range from Raphael Guerreiro's whipped free-kick.
Dortmund doubled their lead soon after the break through Aubameyang, who scored his first goal since scoring the winner against Leipzig in early February, tapping in after good work by Marco Reus.
Aubameyang scored Dortmund's third a few minutes later, drilling in from Erik Durm's pass to complete a good day's work for Thomas Tuchel's men.
Hertha Berlin 2-0 Eintracht Frankfurt
(Ibisevic 52', Darida 83')
Hertha Berlin scored two second half goals to beat ten-man Eintracht Frankfurt and go fifth.
After a dire first half, Hertha started the second half the stronger and took the lead through Vedad Ibisevic, who slotted the ball in after Salomon Kalou was bundled over.
Haris Seferovic made Frankfurt's task even harder when he was sent off, and Vladimir Darida's header from Max Mittelstädt's cross secured the victory.
Hertha are now level on points with fourth-placed Hoffenheim, who travel to Schalke on Sunday.
Bayer Leverkusen 0–2 Mainz
(Bell 3', Öztunali 11')
Roger Schmidt is under increasing pressure after his side produced a poor display at home to Mainz.
Stefan Bell headed in to stun the BayArena in the third minute.
Mainz then doubled their lead soon after when Levin Öztunali's free-kick into the box missed everyone and fooled Bernd Leno in the Leverkusen goal, with the keeper reacting too late to keep it out.
Leverkusen improved after the break, but the damage was already done for Schmidt's struggling side.
Darmstadt 1–2 Augsburg
(Heller 47' - Verhaegh pen 55', Bobadilla 85')
Raul Bobadilla scored a late winner as Augsburg recovered from a goal down to win at struggling Darmstadt.
After tepid first half, Darmstadt flew out of the blocks at the start of the second half. Jerome Gondorf's cross from the right found its way through to the unmarked Marcel Heller at the far post, and the forward had plenty of time to take a touch and slot the ball home.
But Darmstadt couldn't hold onto their lead. Alexander Milosevic tripped Dominik Kohr in the box and Paul Verhaegh stepped up to squeeze his penalty past Michael Esser.
Augsburg completed the turnaround five minutes from time, with Bobadilla beating the offside trap and dinking the ball neatly over Esser.