Goals from Ousmane Dembele and Bundesliga top-scorer Pierre-Emerick Aubameyang either side of Ante Rebic’s equaliser gave Dortmund, who finished third in the Bundesliga, their first Cup win since their 2012 domestic double.
It was also the first trophy for coach Thomas Tuchel, who joined in 2015, and for unlucky winger Marco Reus, considered among the most talented players of his generation but who had lost four finals since arriving in 2012, including the 2013 Champions League final.
Dortmund enjoyed a strong start with Dembele wrong-footing a defender before curling his shot into the far corner.
Frankfurt needed some time to recover and they did it with their first chance when Rebic was sent through with a superb Mijat Gacinovic pass to beat Roman Buerki with a low shot.
Aubameyang, in what could be his last appearance for the team, chipped in a 67th-minute penalty to cap a memorable season.