Bayern Munich stayed five points clear on top of the Bundesliga after Carlo Ancelotti's 1,000th career game ended 8-0 against Hamburg.
Bayern, who have scored 44 goals and conceded just three against Hamburg since 2011, went ahead as Arturo Vidal struck with powerful drive from the edge of the box before Robert Lewandowski netted a brace, the first from the penalty spot, to give Bayern a comfortable 3-0 half-time lead.
The Poland striker completed his hat trick on 54 minutes for Bayern's 50th league goal of the season before David Alaba, Kingsley Coman with two and Arjen Robben all struck to maintain the hosts' five-point lead over RB Leipzig at the top of the Bundesliga.
Leipzig kept up the chase on Bayern though, running out 3-1 winners against Cologne.
Emil Forsberg fired them into an early lead, set up by Timo Werner, but it could have been more with Leipzig causing all sorts of problems for the visiting defence. Only the crossbar denied Marcel Halstenberg, with Thomas Kessler forced to clear Werner's header from the rebound off the line.
An own goal from Dominic Maroh in the 34th was just reward for the home side's efforts, but Cologne improved after the break and Yuya Osako pulled one back early in the second half.
However, Werner killed off any hopes of a comeback in the 65th minute with his 13th goal of the season.
Borussia Dortmund climbed into third place with a 3-0 win at Freiburg.
A header from Sokratis Papastathopoulos gave Dortmund a deserved early lead, and Pierre-Emerick Aubameyang added two in the second-half to seal the win and take his tally for the season to 19, level with Lewandowski.
Hertha Berlin increased their chances of European football next season with a hard-fought 2-0 win over 10-man Eintracht Frankfurt.
After a goalless first half, Bosnian striker Vedad Ibisevic broke the deadlock seven minutes after the restart when he slotted home from 12 yards following neat footwork by Solomon Kalou.
Frankfurt striker Haris Seferovic received his marching orders on 78 minutes for violent conduct after an altercation with Berlin midfielder Niklas Stark before Vladimir Darida sealed victory with a header seven minutes from time.
Victory meant Hertha leapfrogged their opponents into fifth place while the visitors extended their losing streak to three matches.
Bayer Leverkusen's miserable week continued as they were beaten 2-0 by Mainz, after losing 4-2 at home to Atletico Madrid in the Champions League on Tuesday.
Mid-table Mainz raced into an early lead through Stefan Bell and Levin Oztunali and held on to move within two points of Leverkusen.
In the other game all the goals came in the second-half as Augsburg came from behind to beat the Bundesliga's bottom side, Darmstadt, 2-1.
Marcel Heller scored with Darmstadt's first shot minutes after the restart, but Paul Verhaegh equalised from the penalty spot in the 55th minute. Raul Bobadilla scored the winner with five minutes remaining to leave the hosts 10 points from safety at the bottom.
The Altintop twins lined up on opposite sides with Hamit appearing for the home team and Halil for Augsburg.
Information from The Associated Press and Press Association was used in this report.