City went 2-0 down to Blades goals either side of half time from Neil Shipperley and Paul Ifill, but turned it around with a 56th minute double substitution. Both Stuart Elliott and Darryl Duffy came on to score in the 65th and 70th minutes respectively to draw level.
Home keeper Paddy Kenny was lucky not to concede a penalty and be sent off, while he was also struggling to stay on after suffering a knock, but had to battle on as Neil Warnock didn't have a goalkeeper on the bench.
David Unsworth's goal in injury time stole it for the South Yorkshire club to make it 3-2 and keep their automatic promotion hopes on course. Leeds's 0-0 draw with Plymouth - their 6th successive game without a win - leaves them 9 points behind the Blades with 4 games remaining.
At the bottom end of the table, Millwall failed to capitalise on Sheffield Wednesday's 2-0 defeat to Crewe. The Lions lost 1-0 at Derby, so Crewe overtake them and Brighton - who lost 2-0 to Southampton - into 22nd place. They're still 5 points behind Wednesday though. City, 19th ahead of Derby on goal difference, sit 11 points clear of Crewe and are almost mathematically impossible to be caught now.