The result also dents their opponents' hopes of qualifying for the Champions League next season.
Joselu's goal in the 16th minute was enough to decide the game in the Eagles' favour.
Gladbach left it late to mount a rally, failing to break Frankfurt's resistance as they slipped to sixth, five points behind the top four and only a point ahead of seventh-placed Mainz.
Gladbach did not play with the air of a side who had won their last two games, and had the chance to move into the top four with a win. They were too passive, allowing Frankfurt to attack them, but without showing even a hint of their usual counter-attacking play.
The home side displayed more hunger and they took the lead when Joselu used his upper body strength to hold off Martin Stranzl before shooting past Marc-Andre ter Stegen, after Martin Lanig and Stefan Aigner had engineered the chance.
Gladbach did not react and Frankfurt had chances to increase their lead, the best one falling to Joselu once again - but he shot just inches wide from Aigner's cross.
The visitors finally started to launch some attacks in the second half.
Juan Arango was the source of most of their attacks while it was Max Kruse who was first to take a shot on the Frankfurt goal, missing the target 10 minutes in.
As the visitors started to open up, Frankfurt played them at their own game with a counter-attacking style which carved out several openings, mostly through the enterprising Tranquillo Barnetta.
Gladbach's pressure continued to rise, but Frankfurt looked increasingly firm at the back.
Not even when ter Stegen raced forward for a late free-kick could they find a way through the Frankfurt defence, as the Gladbach goalkeeper fouled his opposite number Kevin Trapp with what proved to be the last chance of the game.