Match ends, Swindon Town 1, Rotherham United 2.
Wes Thomas scored twice as Rotherham beat Swindon to secure a League One play-off meeting with Preston.
The Robins were behind after 58 seconds when Thomas latched on to Ben Pringle's pass to score in the left corner.
The pair combined again as Thomas doubled the lead with a far-post header, before Michael Smith reduced the deficit from the penalty spot.
Jay McEveley came close to an equaliser when his 30-yard shot hit the bar but the Millers held on for the win.
Swindon Town manager Mark Cooper told BBC Wiltshire:
"First half we didn't turn up, that will have taught them a lesson. That's not acceptable.
"Second half we got the required effort and desire, and could have easily got something out of the game just by upping the tempo and getting about the pitch.
"The players have been brilliant (this season), they deserve all the credit in the world.
"The way they were thrown together and to finish in the top half of the table I'm very proud of them."
Rotherham boss Steve Evans told BBC Radio Sheffield:
"We made some big changes to allow people with some opportunity to stake a claim.
"I though we were terrific. First half we were exceptional and we should have been over and dusted with the dominance.
"It's going to be tough. It was tough at the start of the season to try and get into the play-offs."
- 14McEveleySubstituted forJonesat 87'minutes
- 29Rossi Branco
- 39GladwinSubstituted forBarkerat 58'minutes
- 17WaldonSubstituted forRandall-Hurranat 72'minutes
- 44Da Costa
- 15MilsomSubstituted forO'Connorat 64'minutes
- 35HitchcockSubstituted forVuckicat 70'minutes
- 26ThomasSubstituted forAgardat 45'minutes
- Dean Whitestone
- Shots on Target
Second Half ends, Swindon Town 1, Rotherham United 2.
Louis Thompson (Swindon Town) wins a free kick on the left wing.
Foul by Kieran Agard (Rotherham United).
Attempt missed. Jack Barthram (Swindon Town) right footed shot from outside the box is too high.
Hand ball by Louis Thompson (Swindon Town).
Substitution, Swindon Town. Matty Jones replaces James McEveley.
Corner, Swindon Town. Conceded by Michael O'Connor.
Attempt missed. James Tavernier (Rotherham United) right footed shot from outside the box is too high from a direct free kick.
Foul by Raphael Rossi Branco (Swindon Town).
Kieran Agard (Rotherham United) wins a free kick in the defensive half.
Corner, Swindon Town. Conceded by Richard Brindley.
James McEveley (Swindon Town) wins a free kick on the right wing.
Foul by Richard Brindley (Rotherham United).
Substitution, Swindon Town. Will Randall-Hurran replaces Connor Waldon.
Substitution, Rotherham United. Haris Vuckic replaces Tom Hitchcock.
Foul by Massimo Luongo (Swindon Town).
James Tavernier (Rotherham United) wins a free kick in the attacking half.
James McEveley (Swindon Town) hits the bar with a left footed shot from outside the box following a corner.
Corner, Swindon Town. Conceded by Kári Arnason.