Manchester United went nine points clear of Chelsea at the top of the Premiership, but this was not one of the smooth silky performances the Red Devilss have turned on so many times this season.
Neighbours City made them fight for the points, although some disastrous defending by the Blues contributed to their downfall.
City had drawn on their last two visits to Old Trafford and they raised their game way beyond an away record which had seen them lose six of their previous away games in the Premiership this season.
Wayne Rooney was the catalyst in United's victory - lively throughout with his pace and imagination causing worries in City minds and errors in their feet.
Rooney missed several chances, but the one he put away in the sixth minute undoubtedly opened up the game.
Cristiano Ronaldo bent in a low cross from the right, City skipper Sylvain Distin made a complete hash of his attempted clearance while Richard Dunne failed to get to the ball and Rooney tapped it home right footed from eight yards.
Rooney was through again soon after, although this time Dunne recovered to clear as the England man 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. Hatem 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 £2million 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 equalised after 72 minutes.
Stephen Ireland, a second-half 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 recovered to seal victory 12 minutes later.
Dunne miscued his attempted clearance of Rooney's cross from the left side of the box and Ronaldo hooked the ball in right-footed from six yards.
City suffered another blow in injury time when Corradi, booked for a 61st minute foul, was sent off for a second bookable offence after diving following a challenge with Heinze.