text: Thomas blasted home for the relegation-threatened Robins in the 94th minute after being picked out by Nicky Ajose to boost Swindon's survival chances.
  Up to that point the game was lacking many clear-cut chances, with both teams unable to break the deadlock.
  The first half was evenly contested and the first opening fell to promotion-chasing Millwall in the fifth minute when Lee Gregory ran on to a long kick from goalkeeper Jordan Archer but could only manage a tame shot from a tight angle.
  Swindon's best chance of the half came in the 21st minute when, following some intricate football on the edge of the Millwall box, Charlie Colkett took a shot destined for the right corner only for Archer to push it behind.
  Swindon were the better team in the second half but were unable to capitalise on their dominance until Thomas' late heroics.
  Jonathan Obika earlier seemed to have passed up the opportunity to snatch victory when he was unable to get a good connection on a header.
  Match report supplied by the Press Association
  Match ends, Swindon Town 1, Millwall 0.
  Second Half ends, Swindon Town 1, Millwall 0.
  Goal!  Swindon Town 1, Millwall 0. Conor Thomas (Swindon Town) right footed shot from the centre of the box to the bottom right corner.
  Attempt blocked. Nicky Ajose (Swindon Town) right footed shot from outside the box is blocked.
  Hand ball by Lee Gregory (Millwall).
  Dion Conroy (Swindon Town) is shown the yellow card for a bad foul.
  Foul by Dion Conroy (Swindon Town).
  Fred Onyedinma (Millwall) wins a free kick in the attacking half.
  Charlie Colkett (Swindon Town) wins a free kick in the attacking half.
  Foul by Lee Gregory (Millwall).
  Substitution, Swindon Town. Bradley Barry replaces Nathan Thompson.
  Nathan Thompson (Swindon Town) is shown the yellow card for a bad foul.
  Corner,  Swindon Town. Conceded by Mahlon Romeo.
  Callum Butcher (Millwall) is shown the yellow card for a bad foul.
  Rohan Ince (Swindon Town) wins a free kick in the defensive half.
  Foul by Callum Butcher (Millwall).
  Corner,  Millwall. Conceded by Dion Conroy.
  Attempt blocked. Jonathan Obika (Swindon Town) right footed shot from outside the box is blocked.
  Rohan Ince (Swindon Town) wins a free kick in the attacking half.
  Foul by Shaun Williams (Millwall).
  Attempt missed. Jonathan Obika (Swindon Town) right footed shot from the centre of the box is just a bit too high.
  Corner,  Swindon Town. Conceded by Tony Craig.
  Corner,  Swindon Town. Conceded by Mahlon Romeo.
  Rohan Ince (Swindon Town) wins a free kick in the defensive half.
  Foul by Shane Ferguson (Millwall).
  Corner,  Millwall. Conceded by James Brophy.
  Attempt saved. Jonathan Obika (Swindon Town) header from the centre of the box is saved in the centre of the goal.
  Corner,  Swindon Town. Conceded by Callum Butcher.
  Substitution, Millwall. Shane Ferguson replaces Steve Morison.
  Substitution, Swindon Town. Luke Norris replaces John Goddard.
  Substitution, Swindon Town. James Brophy replaces Fankaty Dabo.
  Delay over. They are ready to continue.
  Delay in match Lawrence Vigouroux (Swindon Town) because of an injury.
  John Goddard (Swindon Town) wins a free kick in the defensive half.
  Foul by Fred Onyedinma (Millwall).
  Foul by John Goddard (Swindon Town).
  Fred Onyedinma (Millwall) wins a free kick on the right wing.
  Attempt blocked. Jonathan Obika (Swindon Town) right footed shot from outside the box is blocked.
  Fankaty Dabo (Swindon Town) wins a free kick in the attacking half.
  Foul by Fred Onyedinma (Millwall).
target: Substitute Conor Thomas scored a dramatic stoppage-time winner as Swindon ended Millwall's 16-match unbeaten run in League One.