Charlton reached the Sky Bet League One play-off final, where they will meet Sunderland, after a dramatic penalty shootout victory over Doncaster.
After building a 2-1 lead in the first leg, the Addicks' promotion bid was almost ended when they fell 3-1 behind at The Valley thanks to John Marquis' goal in extra time.
Substitute Darren Pratley then forced penalties when he found the finish that ensured a 4-4 draw on aggregate, after which Marquis and then Tommy Rowe missed to give Charlton a 4-3 victory and their place in a May 26 final at Wembley.
The hosts had begun convincingly. From a left-wing free-kick in only the second minute, Josh Cullen delivered an inswinging cross towards the near, left post from where fellow loanee Krystian Bielik calmly headed beyond goalkeeper Marko Marosi.
Their advantage was almost immediately doubled when, after a swift counter, Albie Morgan struck well but into the side netting, yet Doncaster then drew level and were even unfortunate not to quickly take the lead.
Charlton had appeared under minimal threat but in the 11th minute, with little warning from within midfield, Herbie Kane sent a fine touch into the path of Rowe, who struck first-time and into the bottom left corner.
They similarly then almost went in front when Matty Blair split the hosts' defence with a through-ball that put Marquis into space in front of goal, from where he was then denied when his low shot was smothered clear by the diving Dillon Phillips.
If both teams then struggled to dictate both the tempo and play it was Lee Bowyer's men who first went closest to regaining the lead in the second half, when Josh Parker shot narrowly wide at the near post from Lyle Taylor's low cross.
It was in the 88th minute when, after the tireless Taylor had had an effort rightly ruled out for offside, Doncaster then finally found the goal that had begun to look beyond them and forced extra time.
From a right-wing corner, and what may even have proved their last chance, Ali Crawford crossed towards Andy Butler at the back post, and the defender then leapt to head his team in front.
Charlton's promotion hopes even appeared over when, 10 minutes into extra time, the visitors extended their lead. When Anfernee Dijksteel lost possession in midfield, Malik Wilks carried possession down the right before crossing into the penalty area where Marquis routinely nodded in.
From having a two-goal advantage until the final minutes of the first leg, the hosts needed to score just to force penalties, but they impressively found an almost instant response.
In a similar position from the right Taylor crossed to in front of goal, and when Marosi dived to claim possession he then spilt it to Pratley, gifting him the kindest of finishes from directly in front of goal.
The teams remained still level when, after three penalties each, Chris Solly, Cullen, Taylor, Ben Whiteman, Kieran Sadlier and Crawford had each scored.
When Joe Aribo then converted for Charlton and Marquis missed, Naby Sarr saw Marosi save when he could have secured victory, but Doncaster's Rowe then struck a post to settle the most dramatic of affairs.
ga('create', 'UA-72310761-1', 'auto', {'name': 'pacontentapi'});
ga('pacontentapi.set', 'referrer', location.origin);
ga('pacontentapi.set', 'dimension1', 'By Declan Warrington, Press Association Sport');
ga('pacontentapi.set', 'dimension2', '43a252cf-c105-4525-9409-051353bc8646');
ga('pacontentapi.set', 'dimension3', 'paservice:sport,paservice:sport:club-news,paservice:sport:football,paservice:sport:match-reports');
ga('pacontentapi.set', 'dimension6', 'story');
ga('pacontentapi.set', 'dimension7', 'composite');
ga('pacontentapi.set', 'dimension8', null);
ga('pacontentapi.set', 'dimension9', 'sport:football');
ga('pacontentapi.send', 'pageview', { 'location': location.href, 'page': (location.pathname + location.search + location.hash), 'title': 'Charlton heading to Wembley after downing Doncaster on penalties'});