Charlton captain Nicky Bailey's missed penalty cost his side a trip to Wembley and the chance of promotion as Swindon reached the League One play-off final on a night of drama at The Valley.
Midfielder Bailey left the field in tears after sending his side's second penalty of the shoot-out high over the crossbar, while Stephen Darby converted Swindon's final spot-kick to secure Town a shot at reaching the Championship.
Swindon had looked down and out midway through the second half when, at 2-0 down on the night – after an own goal by Simon Ferry on 27 minutes, followed just before half-time by a coolly dispatched goal from Kyel Reid – and 3-2 behind on aggregate, they lost defender Gordon Greer to a red card.
But the 10 men levelled through Danny Ward after a calamitous defensive mix-up. Smith kept his side in the game with saves from Deon Burton and Bailey before referee Neil Swarbrick evened up the numbers when he sent off Addicks defender Miguel Llera for bringing down Charlie Austin in stoppage time.
Charlton had by far the better of the chances in extra time, with Scott Wagstaff shaving a post, Frazer Richardson smashing a shot against the same upright, Smith saving from Nicky Forster and Therry Racon and Burton firing agonisingly wide.
But when 180 minutes of football plus half an hour's extra time, six goals and two sendings-off failed to separate the sides, it was the Robins who held their nerve to prevail on penalties.
Danny Wilson's side will now face either Huddersfield or Millwall in next weekend's final.
Charlton Randolph, Richardson, Dailly, Llera, Borrowdale, Sam (Wagstaff, 66), Semedo, Bailey, Reid, Mooney (Forster, 85), Burton. Substitutes not used Elliot, Racon, Solly, Akpo Sodje, Fry.
Swindon Lucas (Smith, 5), Darby, Cuthbert, Greer, Jean-Francois, McGovern, Ferry (Amankwaah, 72), Douglas, Ward, Paynter (O'Brien, 64), Austin. Substitutes not used Pericard, Easton, Nouble, Timlin.
Referee N Swarbrick (Lancashire).Reuse content