Match ends, Sheffield United 2, Bristol City 3.
Andreas Weimann scored his first career hat-trick as Bristol City twice came from behind to beat Sheffield United and dent the Blades' automatic promotion hopes.
Weimann fired home the winner seven minutes from time to cap an impressive fightback by the Robins, whose victory, coupled with a late comeback win for the Blades' promotion rivals Leeds over Millwall, saw the hosts slip to third in the Championship.
It all seemed to be going to plan for Chris Wilder's side when Billy Sharp headed home John Fleck's free-kick at the far post to give the Blades an early lead.
Bristol City hit back and became the first away side to score at Bramall Lane since Derby on Boxing Day when Weimann looped in a header from Jack Hunt's cross.
Substitute Scott Hogan, on loan from Aston Villa, headed in his first goal since last April from George Baldock's cross 19 minutes from time to put the Blades back in front.
But Weimann levelled for a second time when he turned home Kasey Palmer's cross, before slotting the winner past Dean Henderson after playing a one-two with Famara Diedhiou.
It completed Bristol City's first league double over Sheffield United, their third successive win at Bramall Lane and ensured they remain very much in the play-off picture, lifting them to seventh in the table, a point off the top six but with a game in hand on Derby just above them.
Sheffield United went into the game having kept seven successive clean sheets since drawing 3-3 at Aston Villa and unbeaten in 10, but City created chances throughout an open contest.
Josh Brownhill twice forced impressive saves out of Henderson with long-range efforts in the first half, before also hitting the post with a free-kick with the score at 1-1.
But the day belonged to Austria forward Weimann, who became the first away player to score at Bramall Lane in 697 minutes when he netted City's first equaliser.
Weimann, who had scored only once since August before the game, then struck twice more in six minutes as the Robins fought back for a second time to turn the game around and end a run of six matches without a win in all competitions.
Sheffield United manager Chris Wilder:
"I have always said there will be lots of twists and turns. It's a disappointing day for us. The way that the club ramped the game up was incredible, and we didn't reward the fans with three big points.
"It wasn't to be, we played a really good side. We weren't at our best, especially first half.
"The goals were poor from our point of view so that was disappointing. We had good chances late on to get a result, but we didn't.
"Bristol City needed a result, but the biggest thing is we didn't win the game. We've always reacted strongly and we will have to do that again next week."
Bristol City boss Lee Johnson told BBC Bristol:
"I said to him (Weimann) yesterday 'I couldn't think of anybody worse that I would like to play against than you - I would hate to play against you'.
"To go down twice at a good side away from home like Sheffield United just shows the character that the lads have shown.
"Confidence is everything at this stage. We have got nine rounds to go, the fans have to enjoy it, we have to enjoy it because there is a lot of people under a lot of pressure in the Championship, and we can go and play free."
- 5O'ConnellSubstituted forJohnsonat 76'minutes
- 8DowellSubstituted forHoganat 45'minutes
- 16NorwoodBooked at 66mins
- 5WrightSubstituted forPalmerat 73'minutesBooked at 88mins
- 32HuntBooked at 15mins
- 7SmithSubstituted forPatersonat 73'minutes
- 21PackBooked at 24mins
- 14WeimannBooked at 79minsSubstituted forBakerat 86'minutes
- James Linington
- Shots on Target
Second Half ends, Sheffield United 2, Bristol City 3.
George Baldock (Sheffield United) wins a free kick in the defensive half.
Foul by Kasey Palmer (Bristol City).
Attempt missed. David McGoldrick (Sheffield United) header from the centre of the box is too high. Assisted by Oliver Norwood with a cross following a corner.
Corner, Sheffield United. Conceded by Adam Webster.
Attempt blocked. Scott Hogan (Sheffield United) header from the centre of the box is blocked. Assisted by Marvin Johnson with a headed pass.
Corner, Bristol City. Conceded by Marvin Johnson.
Foul by George Baldock (Sheffield United).
Famara Diedhiou (Bristol City) wins a free kick on the left wing.
Foul by Billy Sharp (Sheffield United).
Nathan Baker (Bristol City) wins a free kick in the defensive half.
Attempt blocked. Marvin Johnson (Sheffield United) left footed shot from outside the box is blocked. Assisted by John Fleck.
Kasey Palmer (Bristol City) is shown the yellow card for a bad foul.
Oliver Norwood (Sheffield United) wins a free kick on the right wing.
Foul by Kasey Palmer (Bristol City).
Chris Basham (Sheffield United) wins a free kick on the right wing.
Foul by Nathan Baker (Bristol City).
Substitution, Bristol City. Nathan Baker replaces Andreas Weimann.
Goal! Sheffield United 2, Bristol City 3. Andreas Weimann (Bristol City) right footed shot from the centre of the box to the bottom left corner. Assisted by Famara Diedhiou.