Match ends, Sheffield United 1, Crewe Alexandra 2.
Ryan Colclough scored an injury-time winner as Crewe beat Sheffield United for the first time at Bramall Lane.
The visitors went ahead on 12 minutes when Uche Ikpeazu showed great strength to put through Lauri Dalla Valle.
Jamie Murphy found Jason Holt inside the box who drilled home his second goal in as many games to equalise for the Blades early in the second half.
But Colclough's right-footed strike from outside the box found its way into the roof of the net.
Crewe, who had only won one of their previous eight games, move out of the League One relegation zone.
Sheffield United's defeat was their first in five games but they remain in fifth place in the table.
Sheffield United manager Nigel Clough told BBC Radio Sheffield:
"We were good in parts but not enough to win the game. To lose after 90 minutes is really disappointing.
"Our general decision making going forward was poor and we've got to do better.
"I thought we were okay in the second half - we were camped in their half but we just couldn't break them down."
- 11BaxterSubstituted forDoyleat 74'minutes
- 7FlynnSubstituted forDaviesat 45'minutesBooked at 89mins
- 32DaviesBooked at 54minsSubstituted forDoneat 74'minutes
- 30TateBooked at 45mins
- 8AtkinsonBooked at 67minsSubstituted forStewartat 76'minutes
- 35AjoseSubstituted forInmanat 85'minutes
- 34IkpeazuSubstituted forColcloughat 71'minutes
- 12Dalla Valle
- James Adcock
- Shots on Target
Second Half ends, Sheffield United 1, Crewe Alexandra 2.
Kieron Freeman (Sheffield United) wins a free kick in the defensive half.
Foul by Bradden Inman (Crewe Alexandra).
Attempt missed. Paul Coutts (Sheffield United) right footed shot from the centre of the box is too high.
Goal! Sheffield United 1, Crewe Alexandra 2. Ryan Colclough (Crewe Alexandra) right footed shot from outside the box to the top right corner.
Corner, Crewe Alexandra. Conceded by Jason Holt.
Attempt blocked. Ryan Colclough (Crewe Alexandra) right footed shot from outside the box is blocked.
Ben Davies (Sheffield United) is shown the yellow card.
Foul by Ben Davies (Sheffield United).
Anthony Grant (Crewe Alexandra) wins a free kick in the defensive half.
Substitution, Crewe Alexandra. Bradden Inman replaces Nicky Ajose.
Corner, Sheffield United. Conceded by Greg Leigh.
Attempt saved. Lauri Dalla Valle (Crewe Alexandra) right footed shot from outside the box is saved in the top right corner.
Attempt missed. Jamie Murphy (Sheffield United) right footed shot from the left side of the box misses to the right.
Foul by Matt Done (Sheffield United).
Harry Davis (Crewe Alexandra) wins a free kick in the attacking half.
Chris Basham (Sheffield United) hits the right post with a header from the centre of the box.
Substitution, Crewe Alexandra. Anthony Stewart replaces Chris Atkinson.
Corner, Sheffield United. Conceded by Paul Rachubka.