RB Leipzig reached the German Cup final as substitute Emil Forsberg netted a last-gasp goal to give it a 2-1 win at Werder Bremen after extra time in a pulsating clash on Friday.

With a penalty shootout looming, Forsberg popped up to volley home superbly with almost the last kick of the game after Hee-Chan Hwang headed a Kevin Kampl cross from the right into the Swedish forward's path.

Leipzig dominated throughout and twice hit the woodwork but was let off the hook late in the first half when Bremen was awarded a penalty only for the decision to be rescinded by referee Manuel Grafe after a VAR check.

The home side's keeper Jiri Pavlenka pulled off several fine saves to keep a clean sheet in regular time but was powerless when Hwang fired Leipzig ahead in the 93rd minute with a clinical finish from eight metres.

American coach Jesse Marsch to succeed Nagelsmann at RB Leipzig

Bremen levelled in the 105th minute out of the blue as Leonardo Bittencourt took advantage of Dayot Upamecano's error and steered the ball home from inside the penalty area after rounding visiting keeper Peter Gulacsi.

But Leipzig had the last laugh when Forsberg, who came on for Christopher Nkunku in the 114th minute, twisted in mid-air to plant an unstoppable shot past Pavlenka as the visitor launched its final raid into Bremen's area.

Leipzig will bid to win its first major trophy in the May 13 final in Berlin, having lost the 2019 final 3-0 to Bayern Munich.

German champion Bayern tops the Bundesliga with 71 points, seven ahead of second-placed Leipzig in its two-team title race. Leipzig coach Julian Nagelsmann is set to take over at Bayern following the conclusion of the season.

Borussia Dortmund is at home to second-tier side Holstein Kiel in the other semifinal on Saturday.