Frankfurt came close to opening the scoring inside the first three minutes of the match. Alexander Meier rose highest to meet a corner but headed it straight against the crossbar.
The hosts created a good opportunity soon after when Zdenek Pospech was slid through on goal, but he put his effort wide of the post.
Early in the second half the visitors were dominating and tested Karius with efforts from Tranquillo Barnetta and Kadlec.
With the game looking like it was heading to a goalless draw, substitute Choupo-Moting won it for the home side.
The striker rose highest at the back post to head in a cross from Pospech and earn his side all three points.