Match ends, Charlton Athletic 2(4), Doncaster Rovers 3(3).
Charlton Athletic beat Doncaster on penalties to reach the League One play-off final after Rovers had forced extra-time on a dramatic night at The Valley.
Krystian Bielik's second-minute header made it 3-1 to the hosts on aggregate and seemed like it would put the Addicks comfortably on course for the final, but a driven effort from Doncaster captain Tommy Rowe and Andy Butler's late header sent the tie to extra time.
Doncaster went ahead on aggregate for the first time when John Marquis nodded in Mallik Wilks' centre in the 100th minute, but Darren Pratley made it 4-4 overall when he turned a loose ball home after Marko Marosi had spilled Lyle Taylor's low cross.
Charlton centre-back Naby Sarr missed the chance to win it in the shootout after Dillon Phillips had saved from Marquis, but Rowe blazed wide to send the Addicks to Wembley and spark a pitch invasion by home fans.
Lee Bowyer's side - beaten play-off semi-finalists last season - will now face Sunderland at the national stadium on Sunday, 26 May, with the south-east London club aiming to end their three-year exile from the Championship.
Charlton, who finished third - 15 points ahead of Rovers in the table - took an early lead through Bielik's thumping header from Josh Cullen's clipped free-kick.
The Addicks were unbeaten in 17 home league games coming into the second leg, but a smart flick from Herbie Kane allowed Rowe to equalise and a brilliant low save from Dillon Phillips stopped Marquis from making it 2-1 on the night shortly afterwards.
The second half became increasingly fractious and had few chances of note, although Josh Parker prodded narrowly wide from a ball in from Taylor, before Butler rose high at the back post to head in Ali Crawford's corner late on and send the match into extra time.
However, Marquis almost won it in the third minute of second-half stoppage time when he was inches away from getting on the end of a fierce low cross from Wilks.
The former Millwall striker did put the visitors ahead with his 26th goal of the campaign but Charlton hit back immediately through Pratley to send the game to spot-kicks.
Playing at a sold-out stadium, with their biggest crowd since 2012 - the year the Addicks won the League One title - Rowe's miss allowed the home fans to celebrate with players on the pitch and contemplate a return to the second tier, despite suffering their first home league defeat since October.
Charlton's progress sets up a repeat of the 1998 second-tier play-off final, when they beat Sunderland 7-6 on penalties following a dramatic 4-4 draw at the old Wembley, a match which included a hat-trick for former Addicks striker Clive Mendonca.
Charlton Athletic boss Lee Bowyer:
"I said it would be a proper football match, with two teams who put their bodies on the line, and both sets of players gave their all.
"We were so tired but the players kept going through extra time. No-one has done to us this season what Doncaster did tonight.
"I was OK through the penalty shoot-out. You just hope that your keeper guesses right, which he did.
"To lead this unique set of players out at Wembley, with our fans singing their hearts out like they do, I think it will be an emotional time for me."
Doncaster Rovers manager Grant McCann:
"I am extremely proud. On reflection, apart from the first half in the first game we were the better team overall.
"The players were outstanding after no-one gave us a chance but, to a man, we were first class. I have a squad who believe in their ability and are together, but unfortunately penalties are a bit of a lottery.
"Everyone should be proud of themselves because we have played them off the park and taken them all the way.
"We had some glorious chances tonight but congratulations to Charlton because they have done it. This has given us a taster for next season and this group will be stronger."
- 4BielikBooked at 38minsSubstituted forSollyat 110'minutes
- 19MorganSubstituted forPratleyat 45'minutesBooked at 120mins
- 17AriboBooked at 113mins
- 10ParkerSubstituted forWilliamsat 95'minutes
- 13MarosiBooked at 125mins
- 17BlairSubstituted forMayat 86'minutes
- 31DowningBooked at 48mins
- 6ButlerBooked at 70mins
- 15KaneSubstituted forCrawfordat 80'minutes
- 8WhitemanBooked at 60mins
- 26CoppingerSubstituted forSadlierat 96'minutes
- 7WilksSubstituted forWrightat 105'minutes
- Gavin Ward
- Shots on Target
Penalty Shootout ends, Charlton Athletic 2(4), Doncaster Rovers 3(3).
Penalty missed! Still Charlton Athletic 2(4), Doncaster Rovers 3(3). Tommy Rowe (Doncaster Rovers) hits the left post with a left footed shot.
Penalty saved! Naby Sarr (Charlton Athletic) fails to capitalise on this great opportunity, left footed shot saved in the bottom left corner.
Penalty saved! John Marquis (Doncaster Rovers) fails to capitalise on this great opportunity, right footed shot saved in the centre of the goal.
Goal! Charlton Athletic 2(4), Doncaster Rovers 3(3). Joe Aribo (Charlton Athletic) converts the penalty with a left footed shot to the bottom right corner.
Goal! Charlton Athletic 2(3), Doncaster Rovers 3(3). Ali Crawford (Doncaster Rovers) converts the penalty with a right footed shot to the top right corner.
Goal! Charlton Athletic 2(3), Doncaster Rovers 3(2). Lyle Taylor (Charlton Athletic) converts the penalty with a right footed shot to the bottom left corner.
Goal! Charlton Athletic 2(2), Doncaster Rovers 3(2). Kieran Sadlier (Doncaster Rovers) converts the penalty with a right footed shot to the top left corner.
Goal! Charlton Athletic 2(2), Doncaster Rovers 3(1). Josh Cullen (Charlton Athletic) converts the penalty with a right footed shot to the bottom left corner.
Goal! Charlton Athletic 2(1), Doncaster Rovers 3(1). Benjamin Whiteman (Doncaster Rovers) converts the penalty with a right footed shot to the high centre of the goal.
Goal! Charlton Athletic 2(1), Doncaster Rovers 3. Chris Solly (Charlton Athletic) converts the penalty with a right footed shot to the bottom right corner.
Penalty Shootout begins Charlton Athletic 2, Doncaster Rovers 3.
Second Half Extra Time ends, Charlton Athletic 2, Doncaster Rovers 3.
Foul by Andy Butler (Doncaster Rovers).
Dillon Phillips (Charlton Athletic) wins a free kick in the defensive half.
Attempt saved. Paul Downing (Doncaster Rovers) header from the centre of the box is saved in the top centre of the goal. Assisted by Ali Crawford with a cross.
Darren Pratley (Charlton Athletic) is shown the yellow card for a bad foul.
Corner, Doncaster Rovers. Conceded by Patrick Bauer.
Foul by Tommy Rowe (Doncaster Rovers).