The Bundesliga side had beaten Barcelona away from home to reach this stage and showed why they had caused the Blaugrana such problems in their latest exciting attacking display that featured the earliest ever Europa League semi-final goal.
That Ansgar Knauff header after 50 seconds was cancelled out by Michail Antonio later in the first half, but Frankfurt were firmly on top following the restart.
Daichi Kamada tapped in what proved to be the winner on the night, with Jarrod Bowen almost stealing a draw when an audacious acrobatic effort cannoned off the crossbar in injury time leaving David Moyes' West Ham a tough task heading to Germany for next week's return match.
Knauff had netted in the home draw with Barcelona and got his name on the scoresheet again when found by Rafael Borre's cross from the left corner of the West Ham penalty area, in behind Pablo Fornals and able to head into the bottom-left corner.
Bowen should have equalised before Antonio did, shooting against the post after running clear but let off the hook as Kurt Zouma – cleared to start following an ankle injury – headed Manuel Lanzini's free-kick down for West Ham's number nine to toe across the line.
Knauff squandered an opportunity to restore Frankfurt's lead before the break, yet Kamada made no mistake nine minutes into the second period, almost walking the ball into the net when Alphonse Areola parried Djibril Sow's effort at the end of an incisive move.
Kamara almost added another on the counter as West Ham went looking for a second leveller, seeing his curler deflected onto the post, although there could have been a dramatic final twist when Bowen's overhead kick bounced away off the woodwork at the last.