Match ends, Crewe Alexandra 1, Bristol City 0.
On-loan midfielder Jamie Ness fired the only goal as bottom club Crewe upset 10-man Bristol City at Gresty Road.
Ness found the top corner after good work by sub George Cooper as City paid the price for Derrick Williams's dismissal for a foul on Uche Ikpeazu.
Crewe goalkeeper Ben Garratt made two point-blank saves in the first half, while opposite number Frank Fielding superbly denied Anthony Grant.
City almost levelled late on when Aden Flint's header was blocked on the line.
Cooper was in the perfect position by the post to keep the ball out, but moments later he wasted a great chance to kill the game at the other end when he shot wide.
The win was Crewe's first in League One since beating Peterborough on 21 October, but they remained at the foot of the table on goal difference below Leyton Orient, with the visitors hanging on to top spot by a point after only their third defeat of the season.
Bristol City boss Steve Cotterill told BBC Radio Bristol:
"If he's going to send Derrick off, and Derrick deserved to be sent off, then I think he could have sent off their striker Ikpeazu as well for persistent fouling.
"I wouldn't encourage that, I really would not encourage that, but we've been on the rough end of it today because he didn't give us anything.
"Well, he's one of three referees who have seen us beat this season, so congratulations to him.
"We've created enough chances to win two or three games. Having said that, we've got to take them."
- 5RayBooked at 53mins
- 7TurtonSubstituted forCooperat 69'minutes
- 34IkpeazuBooked at 45minsSubstituted forNolanat 77'minutes
- 35AjoseSubstituted forHaberat 88'minutes
- 3WilliamsBooked at 50mins
- 8ElliottSubstituted forPackat 31'minutes
- 15FreemanSubstituted forEmmanuel-Thomasat 84'minutes
- 19AgardSubstituted forSmithat 76'minutes
- Andy Haines
- Shots on Target
Second Half ends, Crewe Alexandra 1, Bristol City 0.
Anthony Grant (Crewe Alexandra) wins a free kick in the defensive half.
Foul by Marlon Pack (Bristol City).
Attempt missed. Jay Emmanuel-Thomas (Bristol City) left footed shot from outside the box misses to the right.
Attempt missed. George Cooper (Crewe Alexandra) right footed shot from the centre of the box is close, but misses to the right.
Attempt blocked. Aden Flint (Bristol City) right footed shot from the centre of the box is blocked.
Substitution, Crewe Alexandra. Marcus Haber replaces Nicky Ajose.
Corner, Bristol City. Conceded by George Ray.
Aaron Wilbraham (Bristol City) wins a free kick in the attacking half.
Foul by Liam Nolan (Crewe Alexandra).
Substitution, Bristol City. Jay Emmanuel-Thomas replaces Luke Freeman.
Attempt blocked. Korey Smith (Bristol City) right footed shot from the right side of the box is blocked.
Corner, Crewe Alexandra. Conceded by Aden Flint.
Attempt blocked. James Baillie (Crewe Alexandra) right footed shot from the centre of the box is blocked.
Attempt blocked. Liam Nolan (Crewe Alexandra) right footed shot from a difficult angle on the right is blocked.
Corner, Bristol City. Conceded by Ben Garratt.
Attempt saved. Aaron Wilbraham (Bristol City) right footed shot from a difficult angle on the right is saved in the bottom right corner.
Substitution, Crewe Alexandra. Liam Nolan replaces Uche Ikpeazu.
Substitution, Bristol City. Matt Smith replaces Kieran Agard.