After an Andre Silva penalty had cancelled out Sheraldo Becker’s first-half header for Union, Forsberg scored in the second minute of stoppage time to seal the semi-final win.
It was the third time Forsberg has scored in a German Cup semi-final.
He also scored a 121st-minute winner in last year’s win over Werder Bremen, having previously netted in a 3-1 victory against Hamburg in 2019.
“These are moments you never forget. It’s unbelievable, it only happens in football,” Forsberg told Sky.
Leipzig will face Freiburg, who beat Hamburg 3-1 on Tuesday, in the final on May 21 at Berlin’s Olympic Stadium.
Leipzig are chasing their first cup title after previous final defeats by Bayern Munich and Borussia Dortmund.
Visitors Union took the lead with 25 minutes gone when Becker tucked a cross inside the far post to the delight of the travelling fans.
It was the first goal Leipzig had conceded in the competition this season.
Leipzig drew level in the 61st minute after their top-scorer Christopher Nkunku was brought down in the area and Portugal striker Silva converted the resulting penalty.
Having missed three penalties this season against Paris Saint-Germain, Real Sociedad and Atalanta in Europe, Silva roared in celebration when his spot-kick sailed past Union’s Danish goalkeeper Frederik Roennow.
Extra time was beckoning when Swedish playmaker Forsberg rose above his marker and guided a header into the corner.
It extended Leipzig’s unbeaten run to 15 games in all competitions.
Leipzig host Union again this Saturday in the Bundesliga ahead of their Europa League semi-final first leg at home to Rangers on April 28.