Hansi Flick's men were made to work for the victory in the second half after seeing their standards slip, but their superior individual quality eventually shone through as Lewandowski netted his 45th goal of the season.
Ivan Perisic put Bayern in front with less than a quarter of an hour played by nodding in an inch-perfect pass from the excellent Thomas Muller and they should have been coasting to the win by half-time, with the defending champions spurning several opportunities.
Frankfurt looked to have capitalised with a deserved equaliser but Danny da Costa's strike restored parity for just five minutes – Lewandowski finishing off an incisive move to book Bayern's passage to another final.