Bristol City, still looking for their first win since promotion, scored twice in a dramatic second half in which Swindon had both their substitutes sent off and gambled on allowing the goalkeeper Frank Talia to play the last 36 minutes with a broken nose.
Talia suffered his injury trying to prevent the City striker Ade Akinbiyi from scoring the first goal of the visitors' fightback after 64 minutes. The two players collided as Akinbiyi converted Brian Tinnion's low cross.
Swindon had no goalkeeper among their substitutes but the physio Dave Moore staunched Talia's bleeding nose with plugs of gauze. The goalkeeper was taken to hospital immediately after the match.
The manager Steve McMahon, under fire from Swindon supporters after his side's poor start to the season, must have thought he could relax after three goals in the opening nine minutes.
Rob Edwards was ruled to have tripped Swindon's Darren Bullock after 60 seconds, Mark Walters sending City goalkeeper Keith Welch the wrong way with the penalty.
After six minutes, the finger of blame pointed at Edwards again when his attempted clearance from Gareth Hall's free-kick merely set up George Ndah to head the second. With City reeling, Iffy Onuora prodded home Swindon's third three minutes later. By half-time, the only blemish for McMahon was a hamstring injury to his skipper, Brian Borrows.
The visitors regrouped at half-time, taking off Edwards and Tony Thorpe with Matthew Hewlett and Colin Cramb on in their place.
The consequence was a second-half siege for Swindon, who were plunged into crisis 14 minutes from time when Sol Davis, who had replaced Borrows, brought down Scott Murray to concede a penalty and was sent off for the foul.
Micky Bell reduced Swindon's lead to a single goal but despite incessant pressure and the dismissal of Robin Hulbert in the first of eight minutes of added time, Swindon clung on.