Dortmund march on, Kaiserslautern crush Schalke
Goals by defender Neven Subotic on the stroke of half-time, Shinji Kagawa, substitute Kevin Grosskreutz and Lucas Barrios handed Dortmund their 12th win in 14 games after Marco Reus had given the injury-hit visitors a surprise lead.
Dortmund, with 37 points to Mainz's 30, look almost certain to enter the winter break in first place with three games left.
"I am more relieved than happy. Gladbach were very disciplined especially in the first half," said Dortmund coach Jurgen Klopp.
"After that it seemed to work much better for us... and (Barrios') backheel to set up our third goal only comes when you are top of the table."
Champions Bayern Munich beat Eintracht Frankfurt 4-1 courtesy of some bad goalkeeping to climb up to fifth place.
Frankfurt goalkeeper Oka Nikolov twice failed to hold on to long-range shots in the space of two minutes, allowing Thomas Muller and Mario Gomez to score on the rebound and seal a victory that will give coach Louis van Gaal some respite.
"We played very good football today and we are happy with Louis van Gaal," said club CEO Karl-Heinz Rummenigge.
Anatoliy Tymoshchuk, who added a fourth late on, had given them a 29th minute lead before Bundesliga top scorer Fanis Gekas levelled four minutes later with his 12th goal of the season.
Third-placed Bayer Leverkusen squandered a two-goal lead and conceded a stoppage-time penalty that allowed Hoffenheim to snatch a 2-2 draw. Mainz beat Nuremberg 3-0 on Friday.
Hanover 96 continued their spectacular season, beating Freiburg 3-0 to stay fourth, while Schalke 04 slumped to a 5-0 defeat at Kaiserslautern only three days after they advanced in the Champions League. They remain 15th with 13 points.
Hamburg SV beat 10-man VfB Stuttgart 4-2, ending a two-game losing streak with substitute Ruud van Nistelrooy netting his fifth goal of the season, to move up to seventh on 21 points.
It was always going to be a one-sided game for Dortmund against a Moenchengladbach side missing several injured defenders and who have now conceded 40 goals this season.
While the home side dominated they could not score early on and Gladbach keeper Christofer Heimeroth made the save of the day when he palmed away Kagawa's header on the half hour.
The visitors stunned Dortmund three minutes later when Reus hammered the ball in from almost 25 metres but the hosts levelled on the stroke of halftime through Subotic, who powered in a header from a Mario Goetze corner.
Japanese Kagawa then chased down a Nuri Sahin through ball to put Dortmund ahead with his seventh goal of the season.
Germany international Grosskreutz made sure of the three points when he flicked the ball in from close range after Lucas Barrios's backheel set him up and the Paraguay international then got on the