Borussia Dortmund reduced the gap behind leaders Bayern Munich to three points in second place after edging Hoffenheim in a five-goal thriller at PreZero Arena.
Erling Haaland gave Dortmund an early lead but Andrej Kramaric found the equaliser for Hoffenheim on the stroke of half-time.
Marco Reus gave Dortmund the lead just before the hour-mark while an own goal by David Raum in the 66th minute gave the visitors a 3-1 lead.
Georginio Rutter pulled a goal back for Hoffenheim 13 minutes before time but BVB held on to clinch their third win in a row.
Bayer Leverkusen went up to third in the standings after hammering Augsburg 5-1 courtesy of a hat-trick by Moussa Diaby at BayArena.
Karim Bellarabi gave Leverkusen an early lead, while Diaby gave them a two-goal lead in the 24th minute before netting twice in the second stanza to complete his hat-trick.
Lucas Alario scored a late for Bayer as they ran riot while Arne Maier scored what proved to be a consolation goal for Augsburg.
Borussia Monchengladbach lost back-to-back matches after a late 2-1 defeat to Union Berlin at Borussia-Park.
Max Kruse opened the scoring for Union in the 18th minute but Kouadio Kone levelled matters for Gladbach just before the half-time break.
Kruse netted the winner for Union and got his brace six minutes before time to take them up to fourth on the log.
Freiburg went up to fifth on the log after beating Stuttgart 2-0 at Europa-Park Stadion.
Freiburg broke the deadlock eight minutes before the half-time break thanks to an own goal by Hiroki Ito and Kevin Schade secured the three points with the second goal 19 minutes before time.
Bottom side Greuther Furth won only their second game of the season after edging Mainz 2-1 at Sportpark Ronhof Thomas Sommer.
Jeremy Dudziak gave Furth an early lead and an own goal by Stefan Bell in the 66th minute gave them a two-goal cushion.
Karim Onisiwo pulled a goal back for Mainz in stoppage time but Furth held on to only their second win of the campaign.