Bayer Leverkusen moved up to second on the table after edging Borussia Dortmund 2-1 at Bay Arena.
Moussa Diaby got the opener for Leverkusen in the 14th minute but Julian Brandt got the equaliser for Dortmund in the 67th minute.
However, Florian Wirtz snatched the winner for the hosts in the last ten minutes.
Borussia Monchengladbach stretched their unbeaten run to four matches after edging Werder Bremen 1-0 at Borussia-Park.
After a goalless first stanza, Nico Elvedi eventually broke the deadlock for Gladbach in the 66th minute and that proved to be the winner.
Wolfsburg won for the first time in four matches after beating Mainz 2-0 at Opel Arena.
The first stanza ended without goals but Bartosz Bialek finally broke the ice for Wolfsburg in the 65th minute and Wout Weghorst sealed the deal for the visitors with 11 minutes remaining.
Hoffenheim ended a three-game winless run after thrashing Hertha Berlin 3-0 courtesy of a brace by Andrej Kramaric at Olympiastadion.
Krzysztof Piatek should have given Hertha the lead in the 12th minute from the spot-kick but his penalty was saved by goalkeeper Oliver Baumann and they were punished in the 33rd minute after Sebastian Rudy broke the deadlock for Hoffenheim.
Kramaric sealed the three points for the visitors with two late goals.