Bayern Munich remain on course for the double after the Bundesliga leaders squeezed past Eintracht Frankfurt 2-1 in Wednesday's German Cup semi-final behind closed doors, with both teams supporting the Black Lives Matter movement.
Bayern's early goal by Ivan Perisic was cancelled out by a second-half equaliser from Frankfurt's Danny da Costa, who had only been on for three minutes at the Allianz Arena.
However, Robert Lewandowski settled the matter with the winner 16 minutes from time to claim his 45th goal this season in all competitions.
Bayern will face Bayer Leverkusen, who beat fourth-tier side Saarbruecken 3-0 on Tuesday, in the final at Berlin's Olympic Stadium on July 4.
"We didn't always make the right decisions in the area, we should have been three or four up at half-time, which would've made our lives much easier," admitted Bayern's Thomes Mueller, whose chip set up Perisic's opening goal.
"You could feel the tiredness from both teams in the second-half when it got close, the will was there and we defended well, especially against the long balls."
Hansi Flick-coached Bayern, who have a seven-point lead with four games left in the league, can wrap up an eighth consecutive Bundesliga title this weekend if they beat Borussia Moenchengladbach and second-placed Borussia Dortmund lose at strugglers Fortuna Duesseldorf.
However, Bayern will be without both Lewandowski and Mueller, who are both suspended.
"We need to rest up well and then go again on Saturday, the programme is punishing for all teams, so there is no whinging, but the tiredness is greater than the joy of reaching the final," added Mueller.
Eintracht wore playing shirts supporting the Black Lives Matter movement, while Bayern warmed up in T-shirts bearing the same anti-racism message.
It was the latest show of solidarity in German football following the death of George Floyd in the United States in late May.
Bayern routed Frankfurt 5-2 also at the Allianz Arena, when the sides met in the league just over a fortnight ago, and once again the hosts wasted no time asserting their authority.
Frankfurt midfielder Dominik Kohr cleared Mueller's header off the line with only six minutes gone.
Eintracht had another let off two minutes later when Lewandowski, the league's top-scorer with 30 goals, was inches from converting a Mueller cross.
However, Bayern took the lead when Mueller chipped the defence and Perisic powered his header past Frankfurt goalkeeper Kevin Trapp on 14 minutes.
The Germany goalkeeper had to pull of a point-blank save to deny Lewandowski moments later.
- Da Costa delivers -
It stayed 1-0 at the break, but Bayern found themselves under pressure in the second-half.
Frankfurt's shock 5-1 drubbing of Bayern last November led to the sacking of Niko Kovac, Flick's predecessor as head coach, and the visitors started to win more ball in midfield.
With 66 minutes gone, Frankfurt coach Adi Huetter boosted their attack with double substitutions bringing on Japan midfielder Daichi Kamada and Da Costa.
The move paid off almost immediately.
Kamada managed to beat three defenders in the area before his speculative pass across goal found de Costa, who smashed his shot past Bayern goalkeeper Manuel Neuer on 69 minutes.
It was no more than Frankfurt deserved, but Bayern responded by moving up a gear.
Canadian teenager Alphonso Davies beat the defence in the area and squared to Lewandowski who was waiting to fire home his 45th goal in 39 matches this season.
The referee checked for offside with VAR, but the goal stood and Bayern are into their 25th German Cup final.
Robert Lewandowski's 45th goal of the season sent Bayern into the German Cup final