Jamie Paterson gave the Robins the lead two minutes before halftime before Tom Clarke levelled three minutes after the break. John Fleck was then sent off in the 59th minute for a two-footed challenge on City's Korey Smith. Aden Flint grabbed a late winner to drop Sheffield United to sixth.
Wolves draw blanks at home to Black Cats
Saturday's action saw leaders Wolverhampton Wanderers extended their lead at the top of the table to five points despite drawing 0-0 with 10-man Sunderland at Molineux.
The Black Cats were forced to play 28 minutes with 10 men after Lee Cattermole received two yellow cards in the space of 54 seconds, remaining one point adrift of safety.
Elsewhere, Derby County moved up to fourth with a 3-0 victory at struggling Barnsley.
Tom Lawrence opened the scoring in the 39th minute before top scorer Matej Vydra and Andres Weimann condemned the Tykes to a fifth consecutive defeat.
Aston Villa and Millwall battled hard for a goalless draw at Villa Park, leaving the Villains in fifth and the Lions in 17th. Kemar Roofe's hat-trick to give Leeds United a 3-1 victory at struggling QPR, who netted a late consolation through Pawel Wzsolek at Loftus Road.
Middlesbrough remained eighth, one point ahead of Ipswich Town, whom they defeated 2-0 with goals from Martin Braithwaite and Patrick Bamford, giving boss Garry Monk a much-needed victory at the Riverside.
Hull give Adkins win on his debut in the Tigers dugout
After the visitors went ahead though David Meyler's own goal in the 47th minute, Hull responded through Kamil Grosicki, Larsson and Jackson Irvine.
John Egan pulled the Bees to within a goal with three minutes to go, but Hull held on to bolster their survival hopes following the departure of Leonid Slutsky.
Norwich City ended a seven-match winless streak with a 3-1 victory over Sheffield Wednesday at Carrow Road.
The Canaries were forced to come from behind after Jordan Rhodes headed the visitors into an 18th-minute lead.
James Maddison brought the hosts level in the 55th minute and Timm Klose headed his side in front before Nelson Oliveira netted a late penalty following Barry Bannan's foul on Harrison Reed.
Bolton, Burton, Birmingham all lose to remain in relegation danger
Sheyi Ojo's 14th-minute goal gave Fulham a 1-0 victory over Birmingham City, who missed a late penalty through Jeremie Boga at Craven Cottage, while Bolton Wanderers were beaten 3-2 by Nottingham Forest at the City Ground.
Will Buckley cancelled out Barry McKay's early opener to level things up at half-time before Forest sealed the points thanks to goals from Joe Worrall and Ben Brereton, meaning Worrall's late own goal was nothing more than a consolation.
Burton Albion are rooted to the bottom of the table after Tom Clarke and Daryl Horgan fired Preston North End to a 2-1 win at the Pirelli Stadium.
Lucas Akins netted for Nigel Clough's strugglers late on but they are two points adrift of fourth-bottom Bolton with one win in their last eight games.
Cardiff stun Reading with two goals in final seven minutes to salvage draw
The final game of the round saw second-placed Cardiff City face Reading at the Madejski. The Royals looked set to end the Bluebirds' four-game winning run after a Callum Patterson own goal and Mo Barrow's strike put them 2-0 ahead.
Joe Bennett pulled one back for the visitors before substitute Lee Tomlin's shot off the underside of the bar just crept over the line in stoppage time.
Reading captain Paul McShane almost snatched victory for the hosts, but his header in the final seconds struck a post.