City raised their game way beyond an away record which had seen them lose six of their previous away games in the Premiership this season, but some terrible defending contributed to their downfall.
Wayne Rooney gave United a sixth-minute lead before a poor pass from Hatem Trabelsi to Richard Dunne led to Louis Saha scoring United's second on the stroke of half-time.
The Blues battled back, Trabelsi bringing them back into the game with a fine 72nd-minute strike, before Cristiano Ronaldo sealed it with six minutes left. The Portuguese winger was in an offside position when Rooney's cross came in but Dunne missed the chance to make a routine clearance.
Rooney opened the scoring early after Ronaldo bent in a low cross from the right. Sylvain Distin failed to cut out the cross, as he did Dunne, and Rooney pulled off the back of the City skipper to tap home from eight yards.
Rooney was through again soon after, although this time Dunne recovered to clear as the England striker overran the ball.
City's first chance came in the 20th minute when Bernardo Corradi flicked on Ben Thatcher's cross from the left and Micah Richards hurled himself at the ball to head wide from eight yards.
There was a moment of vintage Rooney in the 24th minute when City could only clear a Ryan Giggs corner to him standing just outside the box. Rooney chested the ball down superbly before getting in a vicious curling shot which Nicky Weaver saved well.
Weaver denied Rooney again after 37 minutes, while another tremendous header by Richards from Joey Barton's 43rd minute corner caused panic in United's defence and Georgios Samaras shot wide from close range.
City looked to have weathered the storm - then up popped Rooney on the stroke of half-time. Trabelsi had played the ball back towards Dunne from the touchline, but Rooney nipped in to beat the Irishman.
He touched it on to Gabriel Heinze and his low cross from the left side of the City box eluded Distin at the near post and was tucked in off the underside of the bar by Louis Saha as he slid in to beat Weaver.
Weaver suffered a dead leg as a result and was replaced by Andreas Isaksson at the start of the second half.
The Swedish international goalkeeper, dogged by persistent injury since his £2m signing from French club Rennes during the summer, was making his City debut and it proved a baptism of fire.
He was forced to parry a blistering Rooney shot in the 53rd minute with Saha ballooning the rebound high over the bar.
The Swede then tipped over a ferocious shot from Giggs and denied Rooney twice, first with a save at full stretch from one shot and then a brilliant point-blank stop to keep out another.
But United had still failed to kill the game off and City gave themselves hope with 18 minutes remaining.
Stephen Ireland, a half-time substitute for the injured Claudio Reyna, set up Trabelsi who hit a fierce left-foot shot from the edge of the United penalty area which beat Edwin van der Sar and went in off the underside of the bar.
United wobbled but sealed victory with six minutes left, Ronaldo hooking the ball in from six yards after Dunne miscued an attempted clearance.
City suffered another blow in injury time when Corradi, booked for a clumsy elbow on Nemanja Vidic, was sent off for a second bookable offence after diving in the United box.