City were bidding for a fifth successive derby win and took the lead in the eighth minute as Sergio Aguero tapped in David Silva’s cross.
But United responded well, levelling in the 14th minute through Ashley Young before going ahead just before the half-hour mark when Marouane Fellaini headed home.
Juan Mata made it 3-1 midway through the second half and Chris Smalling extended the advantage further not long afterwards.
Aguero pulled a late goal back for City but it was nothing more than a consolation as United recorded their sixth consecutive Premier League win and moved four points ahead of their rivals in the table.
For City, it is their sixth defeat in their last eight matches in all competitions and puts an emphatic end to their dominance over United in recent years.
The visitors actually made the better start in wet conditions at Old Trafford and could have taken the lead in the sixth minute had Jesus Navas converted a one-on-one chance against David de Gea.
But the deadlock was broken shortly afterwards as James Milner played a clever reverse pass through for David Silva and he crossed for Aguero to tap in.
It was no more than City deserved after a positive opening but their lead did not last long as Gael Clichy was unable to clear Ander Herrera’s cross and the ball bounced up kindly for Young to finish from close range.
The fast-paced start to the match continued but it was United who were finding their rhythm and starting to take control of the contest.
They went ahead for the first time in the 27th minute when Young curled in a cross from the left for Fellaini to head home at the back post.
City struggled to create any clear-cut openings and were perhaps fortunate not to have captain Vincent Kompany sent off as he was only shown yellow for a studs-up tackle on Daley Blind.
Kompany was, though, taken off at the break after appearing to injure himself in the challenge, but his replacement Eliaquim Managla could not prevent City being pushed back in the second half.
Joe Hart parried a free-kick from England colleague Wayne Rooney and then saved from Carrick as the ball pinballed around in the box.
But United would not be deterred and extended their lead midway through the half, with Mata running on to Rooney’s pass and tucking the ball between Hart’s legs despite replays showing he had been offside.
Smalling rubbed salt in City wounds in the 73rd minute when he headed in Young’s free-kick and all the visitors could muster in reply was a late consolation from Aguero against 10 men after Carrick had gone off injured.
The goal was Aguero’s 100th for City but it was United who were doing all the celebrating at the final whistle.
Manchester United: De Gea (6), Blind (6), Smalling (7), Jones (6), Valencia (6), Carrick (6), Fellaini (7), Herrera (7), Mata (7), Young (8), Rooney (6).
Subs: Rojo (5), Di Maria (5), Falcao (5).
Manchester City: Hart (5), Clichy (5), Demichelis (5), Kompany (4), Zabaleta (5), Fernandinho (5), Milner (5), Navas (5), Toure (5), Silva (6), Aguero (7).
Subs: Mangala (5), Lampard (5), Nasri (5).
Man of the match: Ashley Young