Borussia Dortmund have bounced back after their German Cup exit to second-division St Pauli with a clinical display in Sinsheim, where they beat Hoffenheim 3-2.
Donyell Malen set up all three on Saturday as Dortmund cut the gap on Bayern Munich in the Bundesliga to three points, even though the champions will have the chance to restore their advantage when they visit struggling Hertha Berlin on Sunday.
The only cloud for Dortmund was that Erling Haaland, who scored the opening goal, went off in the second half with an apparent groin injury.
Haaland got the visitors off to a great start in the sixth minute, heading home his 16th goal of the season from Jude Bellingham's cross.
Andrej Kramaric scored a deserved equaliser before the break but Malen set up Marco Reus to score with Dortmund's second shot on goal in the 58th minute.
Malen set up Dortmund's next goal, too, the Dutch winger crossing for Davin Raum to turn the ball past his own goalkeeper in the 67th minute.
Hoffenheim's Munas Dabbur set up Georginio Rutter in the 77th for an exciting finale, but Dortmund held on.
Elsewhere, Max Kruse scored twice for Union Berlin to leave Borussia Monchengladbach in crisis after a 2-1 defeat.
It was Gladbach's fourth straight league loss at home, just days after their German Cup exit to second-division Hannover.
The latest defeat piles the pressure on coach Adi Hutter, who was already under scrutiny after losing six of the last eight games across all competitions.
Gladbach are only three points above the relegation zone and Hutter said before Union's visit that his team will be "several weeks" without captain Lars Stindl, who injured his knee in training on Friday.
Union, who were only promoted to the Bundesliga in 2019, moved fourth, the last qualification place for the Champions League.
The 18-year-old Florian Wirtz starred, and Moussa Diaby scored a hat-trick, as Bayer Leverkusen routed Augsburg 5-1 to consolidate third place.
Freiburg moved fifth with a 2-0 win over relegation candidates Stuttgart, and last-place Greuther Furth claimed their second win of the season with a 2-1 victory over Mainz.
In the day's late game, Cologne earned a 2-2 draw at Bochum.
Australian Associated Press
Sign up for our newsletter to stay up to date.