League One Wrap: Bristol City unbeaten run ends
City last tasted defeat in the league at Rotherham United in March and had begun the 2014-15 campaign with 10 wins and six draws from their first 16 outings.
However, Steve Cotterill's side suffered a blow as early as the third minute at the County Ground when Wade Elliott was shown a straight red card for an off-the-ball clash with Jack Stephens.
And Swindon finally made their numerical advantage count 12 minutes from time when Michael Smith skipped past a couple of challenge inside the area before firing home.
City remain top of the table, with Swindon now up to second, four points behind their opponents.
The victors moved above Preston North End, whose 2-1 reverse at home to Bradford City was their third successive league defeat.
At the other end of the table, Yeovil Town's winless sequence was extended to eight matches as they went down 1-0 at home to Fleetwood Town, for whom Jeff Hughes scored a late winner.
Gillingham fared better, climbing out of the relegation zone with a 3-2 win over fellow strugglers Leyton Orient in a dramatic finish at Priestfield.
After falling behind to Gianvito Plasmati's penalty, Leon Legge netted twice to turn the match in Gillingham's favour.
The hosts then saw Michael Doughty dismissed, before Chris Dagnall netted an equaliser four minutes into stoppage time.
Just when it seemed both sides would have to settle for a draw, substitute Cody McDonald struck in the eighth minute of added on time as Gillingham won for the first time in nine league attempts.
Sheffield United overcame the dismissal of Paddy McCarthy to beat Doncaster Rovers 1-0 in the south Yorkshire derby, while Port Vale triumphed by the same scoreline at home to Rochdale.
Elsewhere, Oldham Athletic drew 1-1 with Crawley Town, Notts County moved up to fourth with a 1-0 win at Coventry City, while Chesterfield's trip to Crewe Alexandra and Walsall's home clash with Peterborough United ended goalless.