Match ends, Crewe Alexandra 2, Rotherham United 1.
League Two Crewe knocked higher league Rotherham out of the FA Cup after Callum Ainley's late goal secured a comeback win.
The tie burst into life when Rotherham edged ahead through a classy finish from Will Vaulks, who curled a right-footed shot into the top corner.
And Rotherham were celebrating what they thought was their second goal when Kieffer Moore headed home Joe Newell's in-swinging corner on the stroke of half-time.
But an infringement was spotted before the corner was taken and Newell was ordered to retake the kick.
Crewe received some more unexpected assistance when they squared the tie straight after the break. Millers goalkeeper Richard O'Donnell was caught off his line as George Cooper drifted across a free-kick and Walker's flicked header found an empty net.
Vaulks went close to adding to his goal several times, and flicked the crossbar with a rasping drive, while Dave Richards did well to keep out a bullet header from Millers' leading scorer Moore.
But it was youngster Ainley who won it for Crewe in the last minute when he got on the end of a ball over the top and flicked a finish over O'Donnell, despite the efforts of Semi Ajayi to clear.
Match report supplied by the Press Association
- 4WalkerBooked at 72mins
- 10BowerySubstituted forPorterat 75'minutes
- 25CummingsBooked at 63mins
- 6WoodSubstituted forIhiekweat 83'minutes
- 23WilliamsBooked at 59minsSubstituted forTaylorat 62'minutes
- 10BallSubstituted forTowellat 68'minutes
- 24MooreBooked at 90mins
- Scott Oldham
- Shots on Target
Second Half ends, Crewe Alexandra 2, Rotherham United 1.
Kieffer Moore (Rotherham United) is shown the yellow card.
Corner, Rotherham United. Conceded by George Cooper.
Attempt saved. Will Vaulks (Rotherham United) right footed shot from outside the box is saved in the top centre of the goal.
Foul by Michael Raynes (Crewe Alexandra).
Kieffer Moore (Rotherham United) wins a free kick in the defensive half.
Foul by George Cooper (Crewe Alexandra).
Richard Towell (Rotherham United) wins a free kick on the left wing.
Goal! Crewe Alexandra 2, Rotherham United 1. Callum Ainley (Crewe Alexandra) right footed shot from the centre of the box to the centre of the goal.
Callum Ainley (Crewe Alexandra) wins a free kick in the attacking half.
Foul by Joshua Emmanuel (Rotherham United).
Attempt missed. Kieffer Moore (Rotherham United) header from the centre of the box is just a bit too high following a corner.
Corner, Rotherham United. Conceded by Conor Grant.
Foul by Tommy Lowery (Crewe Alexandra).
Darren Potter (Rotherham United) wins a free kick in the defensive half.
Substitution, Rotherham United. Michael Ihiekwe replaces Richard Wood.
Attempt missed. Richard Towell (Rotherham United) left footed shot from outside the box is too high.
Attempt saved. Chris Dagnall (Crewe Alexandra) header from the centre of the box is saved in the top centre of the goal.
Attempt missed. Will Vaulks (Rotherham United) right footed shot from outside the box is too high.