RB Leipzig, who started the weekend top of the table, blew the chance to reclaim first place after losing 1-0 at Borussia Moenchengaldbach.
The away defeat capped a week to forget for Julian Nagelsmann's Leipzig following their 5-0 thumping at Manchester United in the Champions League.
Leipzig forwards Yussuf Poulsen and Dani Olmo both wasted chances while Gladbach had a goal by Alassane Plea ruled offside.
Austrian winger Hannes Wolf, 21, who is on loan from Leipzig this season, sealed the win with his first Bundesliga goal on 60 minutes before Plea hit the post.
The result leaves Leipzig third and Gladbach fourth.
Augsburg climbed to fifth as winger Andre Hahn scored two late goals in a 3-1 home win against bottom side Mainz.
Swiss winger Ruben Vargas gave Augsburg the lead with a superb bicycle kick just before half-time.
Mainz sub Karim Onisiwo equalised on the hour mark, but Augsburg took advantage of tired legs as Germany winger Hahn netted twice in the final 10 minutes.
Werder Bremen coach Florian Kohfeldt picked up a point on his third anniversary in the job with a 1-1 draw at Eintracht Frankfurt.
US striker Josh Sargent swept his shot home early in the second half to give Bremen the lead.
Frankfurt's Japan midfielder Daichi Kamada had a first-half goal ruled out when VAR spotted Andre Silva was offside.
However, the Portugal international made amends when he buried Kamada's cross into the Bremen net for the equaliser on 65 minutes.
Schalke, second from bottom, have gone 22 league games without a win after being held to a 1-1 draw at home to Stuttgart on Friday.
A first-half header by Schalke's teenage defender Malick Thiaw was cancelled out by a leveller from Argentinian forward Nicolas Gonzalez for the visitors.
Schalke are edging towards the unwanted record of Tasmania Berlin, who now play in Germany's fifth tier, who went 31 Bundesliga matches without victory in 1965/66.