Taleb Tawatha put the visitors ahead after a dominant quarter of an hour with Gladbach, who were missing eight players through injury, looking without a game plan for the entire first half.
Ibrahima Traore found some space in first half stoppage time to cross and Jonas Hofmann stabbed in at the far post to equalise.
Aubameyang penalty seals cup for Dortmund
The hosts improved in the second half but created few chances in a lacklustre game that meandered towards penalties.
Both teams scored their first six spot kicks before Frankfurt keeper Lukas Hradecky saved two penalties in a row and former Gladbach player Branimir Hrgota converted the winning spot kick to send Eintracht through.
Eintracht, who lost the 2006 final to Bayern, won the last of their four German Cups in 1988.
Bayern host Dortmund on Wednesday for a spot in the May 27 final in Berlin. (Reporting by Karolos Grohmann; Editing by Ian Chadband)
Man Utd loanee Varela suspended by Frankfurt
Dembele sinks Bayern as Dortmund seal dramatic cup win