Holders Bayern Munich remained on course for a domestic double after beating Eintracht Frankfurt 2-1 on Wednesday to reach the German Cup final for the third straight year.
Bayern will now play Bayer Leverkusen, who cruised past fourth-tier Saarbruecken 3-0 on Tuesday, in the final in Berlin on July 4.
Bayern, who have all but secured the Bundesliga title for a record 30th time, are chasing a 20th German Cup crown and were unstoppable in the first half.
An unmarked Ivan Perisic headed in a Thomas Mueller cross for the lead in the 14th minute and they should have scored several more.
Perisic, Kingsley Coman and Robert Lewandowski then went close as the visitors were completely outclassed at the Allianz Arena.
Frankfurt, who beat Bayern in the 2018 final, came out transformed after the break and snatched an equaliser through substitute Danny da Costa in the 69th minute.
However, Lewandowski scored the winner as Bayern hit back within five minutes later with their only real chance in the second half after confusion in the Frankfurt box and following a VAR review.