Palace went ahead with a highly-contentious penalty although the balance was redressed when the hosts were given a similarly baffling decision which also saw Owen Garvan sent off after arguing with referee Anthony Taylor.
Ten-man Palace went ahead through James Vaughan midway through the second half and the Eagles appeared to be heading for victory with Julian Speroni inspired in goal.
However, Ched Evans, who looked offside, levelled before Daniel Bogdanovic won a penalty he subsequently converted,
though but he was then sent off in injury time for a challenge on Vaughan.
It was only United’s third home win of the season, and their first since September 18, and moved them up to 18th with Palace remaining second bottom.
The Eagles took the lead in controversial circumstances when Jean Calve was adjudged to have pushed Neil Danns in the back in the area in the 17th minute although there appeared to be minimal contact as the Palace player checked his run.
Danns took the penalty himself, firing calmly past Steve Simonsen meaning the Blades would have to score two or more goals for only the third time this season if they were to overhaul the visitors.
The Eagles could have doubled their lead with a little over 10 minutes of the first half remaining when Wilfried Zaha was played in on the left of the area but Simonsen blocked the striker’s left-foot flick and United cleared.
United drew level when Taylor awarded a second highly-controversial penalty of the game in the 37th minute.
Taylor ruled Evans had been fouled by Nathaniel Clyne but it appeared the defender had simply got in ahead of the Blades striker and toe-poked the ball.
Worse was to come for the Eagles when Garvan was sent off after arguing vociferously with Taylor. Cresswell buried the penalty as the sides went in level at half-time.
United had the better of the start of the second half and Speroni prevented what seemed to be a certain goal, saving Cresswell’s point-blank header with his legs and seconds later the visitors were ahead.
Clyne got free on the right and drilled in a cross to Vaughan who lost his marker and powered a header home amid questionable home marking.
Speroni produced further heroics when he tipped a volley from Mark Yeates on to the post but just five minutes from time the keeper’s luck ran out as the game turned on its head with two goals in quick succession.
Reid’s cross found Kyle Bartley in the six-yard box and the Arsenal loanee’s header was turned on to the bar by Speroni only for Evans, who appeared offside, to hook the ball home.
Seconds later and the Blades were ahead following the third penalty of the game. Former Blades defender Claude Davis needlessly challenged Bogdanovic when the Maltese striker had his back to goal.
Bogdanovic calmly slotted home before he was sent off in the final minute of injury time after raking Vaughan’s leg.