League One Wrap: Orient return to the top
Nicky Ajose had put the hosts in the lead midway through the first half at the County Ground, but the visitors equalised immediately through David Mooney.
Strikes from Moses Odubajo in the 40th and 46th minutes sealed the points for Russell Slade's side, while Swindon's miserable day was compounded when Jay McEveley saw red for a second caution in the final minute.
The game was plunged into controversy as a Swindon fan made his way onto the pitch and punched Orient goalkeeper Jamie Jones before being escorted away by stewards.
That result saw Orient leap above Wolves, who were held 0-0 at home by fourth-placed Brentford, and there was a fourth consecutive defeat for third-placed Peterborough United, who went down 1-0 at home to struggling Stevenage thanks to Lucas Akins' 20th-minute strike.
The visitors saw Jimmy Smith dismissed in the 64th minute after a receiving a second caution, but they held on for the remainder of the match to maintain their position just above the relegation zone.
Preston North End remain in fifth after a 1-1 home draw with Colchester United.
Joe Garner gave the hosts the lead on the stroke of half-time, but Luke Garbutt earned Colchester a share of the spoils with 14 minutes to go.
Bradford City climbed back into the top six with a 3-2 win at MK Dons, their first success in seven matches.
Nahki Wells put Bradford ahead on 21 minutes before they were pegged back by Patrick Bamford's strike 15 minutes later.
Kyel Reid gave the visitors the advantage with a goal two minutes before the break and, although Shaun Williams equalised for a second time from the spot in the 72nd minute, Jason Kennedy claimed the winner five minutes before the end to lift Bradford back up to sixth.
At the wrong end of the table, Notts County remain bottom after Adam Reach's 73rd-minute goal earned Shrewsbury Town a 1-0 win, while Crewe Alexandra in 23rd also fell to defeat, 2-1 at home to local rivals Port Vale.
The hosts took the lead 10 minutes before the break through George Evans but Rob Taylor's strike two minutes before the break and Jennison Myrie-Williams' winner seven minutes from time ensured Crewe's winless run extended to five matches.
The other two sides in the relegation zone, Bristol City and Sheffield United, went head to head at Ashton Gate with Aden Flint's own goal 12 minutes from time proving enough for the visitors to jump above their opponents into 21st place.
The biggest win of the day went to 10-man Tranmere Rovers, who thumped Coventry City 5-1 away to extend their unbeaten run to five matches.
Ryan Lowe opened the scoring as early as the fourth minute and Jake Kirby doubled the advantage eight minutes before the break. Lowe then grabbed his second in the 44th minute.
The striker completed his hat-trick nine minutes into the second half before Carl Baker pulled one back for the hosts from the penalty spot on 76 minutes.
Tranmere's Ash Taylor was dismissed two minutes later but it had little impact on the visitors, who rounded off the scoring through James Wallace a minute before the end.
Elsewhere, Michael Petrasso's 57th-minute strike handed Oldham Athletic a 1-0 win at Gillingham, while there were goalless draws in the games between Crawley Town and Walsall and Rotherham United and Carlisle United.