The Robins led 2-1 from the first-leg at the County Ground, but their hopes of Wembley appeared over as they trailed by two goals at the break.
Things started badly for them, with goalkeeper David Lucas injured in the opening minutes and having to be replaced by Phil Smith.
An own goal from Simon Ferry as he tried to clear a corner after 23 minutes saw them lose the lead and David Mooney's goal in first-half stoppage-time had Charlton planning for a place in the final.
Victory for the Addicks seemed assured when Swindon's Gordon Greer was shown a straight red for a high challengel with 25 minutes of normal time to play.
The Addicks pushed for a goal to put the tie beyond doubt, but it was Swindon who scored next when Daniel Ward scored to ensure extra-time would be needed.
And the Robins were given a further boost two minutes into second-half stoppage time when Charlton's Miguel Angel Llera was also shown a straight red for a professional foul to ensure the two teams would be numerically even during extra-time.
Both teams missed chances to score in the additional half an hour, but it was the Robins who held their nerve in the penalty shootout to win 5-4. Charlton's Nicky Bailey missed the only spot-kick when he spooned his side's second kick high and wide.