League One Wrap: Top three all slip up
The top three in the division all lost as Bristol City, Swindon Town and MK Dons fell to defeats, giving fourth-placed Preston a timely boost ahead of their FA Cup showdown with Manchester United.
Leaders City welcomed play-off-chasing Sheffield United to Ashton Gate looking for a seventh league win in eight matches.
However, Steve Cotterill's men slipped to just their second home league loss of the campaign as United walked away 3-1 winners.
There was no sign of what was to come at half-time as Matt Smith poked home his seventh league goal for City.
United turned the game on its head when Matt Done tapped in the equaliser 10 minutes after the break, while the same man doubled the lead in the 77th minute and Jamie Murphy slotted home the third in the closing stages to send Nigel Clough's men fifth.
Luckily for City, neither of their nearest rivals could take advantage of their rare defeat - second-placed Swindon also throwing a 1-0 half-time lead away in a 3-1 defeat at Scunthorpe United.
Mark Cooper's side have now lost their past two in League One, but remain second as MK Dons were beaten 4-2 at Gillingham, with manager Justin Edinburgh continuing their revival since taking over last weekend.
Oldham Athletic were also unable cut the gap to the teams at the top, Samuel Szmodics' second-minute goal enough to earn struggling Colchester United a crucial three points.
Seventh-placed Chesterfield were shocked by a 3-2 loss at home to Leyton Orient, Dean Cox's dramatic winner in the 11th minute of injury time moving last season's play-off finalists off the foot of the table.
Izale McLeod scored a hat-trick as Crawley Town condemned Barnsley to a humiliating 5-1 defeat in their first match of the post-Danny Wilson era, while Crewe Alexandra made it three wins on the spin in a 2-0 beating of Fleetwood Town.
Doncaster Rovers are just one point off the top six as they followed their 5-0 win at Crawley in midweek with a 3-0 beating of Yeovil Town - who slipped to foot of the table.
In other matches, Peterborough United defeated Rochdale 2-1 and Port Vale were 1-0 winners at Walsall.