After United threw away a two-goal lead when Juan Mata and Ramires scored, Chelsea had Branislav Ivanovic and Fernando Torres sent off.
And referee Mark Clattenburg then allowed Javier Hernandez's goal to count in the 75th minute despite the United striker appearing to be in an offside position.
"He's always going to be a threat to defenders and he's got the winning goal in an important game," United manager Alex Ferguson said after his team's first league win at Chelsea since April 2002.
"It's always hard to come here and it's hard to get decisions here. Over the last few years there have been some shocking decisions against us, and I think everyone knows that. But today, if we did get a little break, I think we deserved it."
United climbed back above third-place neighbour Manchester City on goal difference, while Tottenham returned to fourth place with a 2-1 victory at Southampton.
In Sunday's other matches, fifth-place Everton fought back from two goals down to hold Liverpool to a 2-2 draw, and Newcastle beat West Bromwich Albion 2-1.
At Stamford Bridge, United looked set to storm to victory after scoring twice in the opening 12 minutes.
Chelsea defender David Luiz inadvertently turned the ball into his own net in the fourth minute after Robin van Persie's shot had rebounded off the post.
Van Persie then found the net himself, sweeping home from Antonio Valencia's cross after United again tore through Chelsea down the right flank.
United goalkeeper David de Gea pulled off a string of saves to prevent Chelsea gaining a foothold in the game, but the hosts' pressure paid off when Mata curled in a free kick just before the break.
Mata helped to set up Chelsea's equalizer eight minutes into the second half. His cross was headed on by Torres to Oscar, who chipped the ball across to Ramires and the Brazilian headed Chelsea level.
But the game swung back in United's favour when Ivanovic was sent off in the 63rd for bringing down Ashley Young and Torres received a second booking for diving after being judged to have gone down too easily under Jonny Evans' challenge six minutes later.
Hernandez, who Ferguson brought on after Ivanovic's dismissal, then pounced by turning Rafael da Silva's shot into the net.
"They say that the winning goal came from an offside, so that's the bit of luck I think we got," Ferguson said. "We started the game so well, absolutely brilliant, and then just 10 minutes from halftime we lost our way a bit. I couldn't wait for halftime, to be honest with you.
"But they got that second goal after halftime and, at that moment, we had to start performing properly, and I think we did better then."
Like United, Liverpool also threw away a two-goal lead at Everton — but couldn't produce a winner.
Luis Suarez scored twice in the first 20 minutes at Goodison Park, with the first strike diverted into the goal by Everton defender Leighton Baines and the second a glancing header from Steven Gerrard's free kick.
Leon Osman began Everton's comeback, driving the ball into the net in the 22nd from goalkeeper Brad Jones' punched clearance. Steven Naismith equalized from Marouane Fellaini's cross 13 minutes later.
Suarez was denied a winner in stoppage time when his goal was ruled out by the referee's assistant, leaving Liverpool six points behind Everton in the standings.
At Southampton, Gareth Bale set Tottenham on the way to victory against his former club by heading home from Tom Huddlestone's pass in the 15th minute. Clint Dempsey doubled Tottenham's lead before the break from close range.
Jay Rodriguez pulled one back in the second half, but Tottenham held on to leave Southampton next-from-last in the standings.
At St. James' Park, Newcastle's winner came in the third minute of stoppage time, with Sammy Ameobi's shot taking a heavy deflection off Papiss Cisse.
Demba Ba put Newcastle in front before halftime but Romelu Lukaku headed West Brom level 10 minutes after the break.Suggest a correction