Christopher Nkunku scored a first-half brace, and Konrad Laimer and Andre Silva added the other goals for the two-time runners-up, DPA reports.
The other fancied team thanks to a strong season in Freiburg, who reached the last four for only the second time with a last-minute 2-1 extra-time win at Bochum.
Second-tier SV Hamburg missed a penalty but still rallied from two goals down to tie 10-man Karlsruhe at 2-2 in stoppage time from Robert Glatzel’s brace, and then won 3-2 in a shoot-out in which their goalkeeper Daniel Heuer Fernandes saved two spot-kicks.
Union Berlin beat St Pauli Hamburg 2-1 on Tuesday to book their place in the semi-finals to be drawn on Sunday and played April 19 and 20, for a place in the May 21 final in Berlin’s Olympic Stadium.
Former European champions Hamburg, who won a third straight shoot-out, are the only second division side and the only former Cup winner from the four semi-finalists, the last success dating back to 1987.
RB Leipzig was founded 22 years later in 2009, and backed by soft drinks makers Red Bull, lost last year’s final to Borussia Dortmund and the 2019 decider to Bayern Munich.
But with the two top sides already eliminated, they are now rated top contenders and lived up to it on Wednesday.
Team top scorer Nkunku set them on course in the 17th minute with a low shot off Dani Olmo’s solo and made it 2-0 five minutes later after rounding goalkeeper Ron-Robert Zieler.
Hanover, the only second-division club ever to win the competition back in 1992 and last 16 winners over Bayern’s conquerors Borussia Mönchengladbach, were beaten for good from Laimer’s effort into the far corner in the 67th. Silva wrapped up matters six minutes later.
“We were totally dominant and are fully deserved in the semi-finals,” said Leipzig midfielder Kevin Kampl, adding that “we want to make history.”
In the round’s only Bundesliga duel, Nils Petersen put visiting Freiburg ahead with a 51st-minute tap-in but Sebastian Polter headed Bochum level 14 minutes later.
The match seemed to be heading to a penalty shoot-out when Bochum defender Maxim Leitsch completely miscued, which allowed Roland Sallai to send Freiburg into the first semis since 2013 in the 120th minute.
“It is great to have made it into the semis,” Freiburg’s Christian Günter said. “One more game till Berlin.”