Leverkusen came from behind to beat Hoffenheim 2-1 earlier in the day to cut the gap at the top to five points with three games to go.

Dortmund went into the weekend knowing they would be crowned champions if they won and Leverkusen failed to do so, but faltered with the finish line in sight.

Mohamadou Idrissou's goal after 35 minutes was enough to win the game for Monchengladbach, who moved off the foot of the table.

Hoffenheim had earlier looked like they might do Dortmund a favour when Gyfli Thor Sigurdsson gave them the lead after 28 minutes against Leverkusen, but Michal Kadlec equalised after 40 minutes and Arturo Vidal turned the game around early in the second half.

Bayern Munich's Champions League aspirations suffered a further setback as they needed a late Mario Gomez penalty to earn a 1-1 draw at Eintracht Frankfurt.

Sebastian Rode gave Frankfurt the lead after 54 minutes as Bayern missed the chance to move ahead of Hannover into third.

Monchengladbach's victory meant St Pauli, who went down 3-1 at home to Werder Bremen, dropped to the bottom of the standings.

Claudio Pizarro struck twice in as many minutes to give Bremen victory. Markus Thorandt's own goal had brought them level in the 50th minute following Fin Bartels' opener for the hosts.

St Pauli slipped five points from safety, level on points with Monchengladbach.

Third-bottom Wolfsburg are on the same number of points as well, but have a game in hand against Cologne tomorrow.

Elsewhere, Cacau scored twice and Christian Gentner once as Stuttgart beat Hamburg 3-0 to give coach Bruno Labbadia some measure of revenge over the team which sacked him a year ago.

Schalke went down 1-0 at home to Kaiserslautern, for whom Srdjan Lakic was on target.