Dortmund are on 69 points with second-placed Bayer Leverkusen, who beat Hoffenheim 2-1, on 64 with three matches remaining.
Cameroon's Mohamadou Idrissou snatched the winner in Gladbach when he beat marker Neven Subotic to slot in 10 minutes before the break as the hosts, desperate for a win that would boost their chances of staying up, showed no signs of nerves.
Gladbach coach Lucien Favre had prepared his team well against Dortmund's lethal offense and they allowed only one big chance in the first half when Robert Lewandowski was sent through by Mario Goetze but goalkeeper Marc-Andre ter Stegen stood his ground to protect their one-goal lead.
Goetze hit the crossbar midway through the second half as the visitors poured forward and Marcel Schmelzer saw his 20-metre shot palmed onto the post by ter Stegen.
The result lifted Gladbach off the bottom spot for the first time since mid-November.
"We did not make Gladbach run enough," said Dortmund coach Jurgen Klopp. "We were not calm enough in our game but we clearly improved in the second half. A draw would have been deserved," he said.
Leverkusen, aware that a draw or defeat would kill their own faint title hopes, recovered from a goal down when left-back Michal Kadlec drilled in a header just before the break to cancel out Gylfi Sigurdsson's 28th minute strike.
A defensive blunder by Ryan Babel in the 51st minute allowed Leverkusen's Arturo Vidal to chip to Stefan Kiessling, the striker chesting it down for the Chilean, who had no trouble firing the hosts into the lead from inside the box.
"This was a tough week for us because the Bayern Munich (5-1 defeat last week) was still in our bones," said Leverkusen assistant coach Peter Hermann, replacing boss Jupp Heynckes who has been ill for much of the week.
"We found it hard going in the first half but based on the number of chances we had in the second we deserved to win."
Fourth-placed Bayern Munich needed an 89th minute penalty by top scorer Mario Gomez to rescue a 1-1 draw at Eintracht Frankfurt and move a point behind third-placed Hanover 96, who are on 57.
The two teams are locked in a battle for a Champions League qualification spot.
Frankfurt had taken the lead early in the second half through a Sebastian Rode shot and missed a golden chance from five metres with Fanis Gekas before Gomez netted his 23rd league goal of the season, converting the penalty just before the end to snatch a point for the reigning champions.
"We are bitterly disappointed because in such a situation you just have to win," said Bayern interim coach Andries Jonker. "When you travel to a relegation-threatened team then you have to come back with the three points."
Champions League semi-finalists Schalke 04 failed to build some confidence ahead of their first leg against Manchester United next week, slumping to a 1-0 home defeat against Kaiserslautern
Thank you for reading 5 articles this month* Join now for unlimited access
Enjoy your first month for just £1 / $1 / €1
*Read 5 free articles per month without a subscription
Join now for unlimited access
Try first month for just £1 / $1 / €1