Match ends, Doncaster Rovers 3, Crewe Alexandra 2.
Doncaster grabbed two goals in stoppage time to snatch a remarkable home win over League One strugglers Crewe.
The visitors took the lead when Marcus Haber fired home from close range before Conor Grant volleyed the equaliser from James Coppinger's cross.
Crewe looked to have sealed the points through Callum Saunders' first league goal, but Cameron Stewart's late free-kick levelled the score.
And Rovers snatched victory when Andy Williams shot home from 20 yards.
The win made it a double boost for Rovers boss Darren Ferguson after defender Cedric Evina signed a new two-and-a-half-year deal before the game.
- 2LundSubstituted forStewartat 71'minutes
- 29AjayiBooked at 90mins
- 16KingSubstituted forInmanat 70'minutes
- 20JonesBooked at 64mins
- 27ColcloughSubstituted forNgat 90+1'minutes
- 7LoweSubstituted forSaundersat 85'minutes
- Darren Drysdale
- Shots on Target
Second Half ends, Doncaster Rovers 3, Crewe Alexandra 2.
Goal! Doncaster Rovers 3, Crewe Alexandra 2. Andy Williams (Doncaster Rovers) left footed shot from the centre of the box to the bottom left corner.
Goal! Doncaster Rovers 2, Crewe Alexandra 2. Cameron Stewart (Doncaster Rovers) from a free kick with a right footed shot to the top right corner.
Andy Williams (Doncaster Rovers) wins a free kick in the defensive half.
Foul by Semi Ajayi (Crewe Alexandra).
Substitution, Crewe Alexandra. Perry Ng replaces Ryan Colclough.
Goal! Doncaster Rovers 1, Crewe Alexandra 2. Callum Saunders (Crewe Alexandra) right footed shot from the centre of the box to the bottom left corner. Assisted by Oliver Turton with a cross.
Corner, Doncaster Rovers. Conceded by Semi Ajayi.
Substitution, Crewe Alexandra. Callum Saunders replaces Ryan Lowe.
Attempt missed. Conor Grant (Doncaster Rovers) left footed shot from outside the box is just a bit too high.
James Coppinger (Doncaster Rovers) wins a free kick in the defensive half.
Foul by Ryan Lowe (Crewe Alexandra).
Attempt missed. Cedric Evina (Doncaster Rovers) right footed shot from the left side of the box is high and wide to the right.
Attempt missed. Andy Williams (Doncaster Rovers) header from the centre of the box misses to the right.
Foul by Craig Alcock (Doncaster Rovers).
Ryan Colclough (Crewe Alexandra) wins a free kick in the defensive half.
Substitution, Doncaster Rovers. Cameron Stewart replaces Mitchell Lund.
Substitution, Crewe Alexandra. Bradden Inman replaces Adam King.
Attempt missed. Nathan Tyson (Doncaster Rovers) right footed shot from outside the box is just a bit too high.