Stefan Aigner struck early and that proved to be the difference between the sides, as the midfielder's recent contributions seems set to preserve their Bundesliga status.
Dortmund dominated possession and had more shots at goal, although they couldn't find a way through in a frustrating afternoon for the visitors.
Aigner opens the scoring
Frankfurt began the better side and had the first chance of the game after a set-piece wasn't properly cleared by Dortmund, instead it was headed back into the six-yard box by Szabolcs Huszti. Luc Castaignos met the ball with a powerful back heel, though Roman Bürki was up to the task of tipping his effort over.
It wasn't a moment later and Aigner had put the hosts ahead. A corner was worked short as Huszti found Makoto Hasebe, and the Japanese midfielder produced a ball of real quality to pick Aigner out. A glancing header from the attacker sealed his second in as many games, and a deserved goal based upon the pattern of play.
Dortmund were slow in comparison and chances were not forthcoming with their usual regularity. Marco Reus and Pierre-Emerick Aubameyang combined twice to good effect in the first period, though the latter failed to finish on both occasions. BVB did fell hard done by, and rightly so, when Mats Hummels had a header wrongly chalked off.
Eagles cling on for huge win
Dortmund dominated the second period, and had enough chances in the second half alone to win the game. Hummels had another header go close after the break, this time Lukas Hradecky made a stunning stop. The Finn did well to hold on to a Henrikh Mkhitaryan drive and then the Armenian wasted a glorious opportunity while unmarked.
The visitors forced one final goal-line scramble but some brave defending from Frankfurt kept them at bay, bringing Niko Kovac's side three clear of VfB Stuttgart in the final automatic relegation spot. A draw next weekend will remove any possibility of relegation next weekend, while BVB's loss meant little in terms of the title race as Bayern Munich beat Ingolstadt 2-1 to seal yet another Bundesliga triumph.