In a derby billed as Man City's last major hurdle of the season, goals from Bernardo Silva and Leroy Sane proved decisive as the champions moved one point clear of Liverpool at the top of the table with only three games of the campaign remaining.
Pep Guardiola's side - who have now won 11 league games in a row - must still beat Burnley, Leicester City and Brighton & Hove Albion to guarantee the title, but tonight's result could prove to be a pivotal moment in a topsy-turvy race as the lead changed hands for the 28th time this season.
United, meanwhile, have now lost seven of their last nine outings across all competitions - the first time that has happened since 1962 - to leave themselves still three points off the pace in the battle for a Champions League spot.
An uncharacteristically sloppy City were slow to come to terms with United's intensity in the opening half-hour, although the hosts were largely limited to long-range efforts - the first of which saw Paul Pogba draw a routine stop from Ederson.
David de Gea was called into action for the first time after 15 minutes when he got down to gather a deflected Raheem Sterling strike, but United were quickly up the other end as Fred sent a powerful swerving effort wide of the target.
The home side's best opening of the half came moments later, although it was still a difficult opportunity as Pogba floated a diagonal ball over to Jesse Lingard, who had to take his volley on first time and floated it wide of the far post.
De Gea was forced into the most difficult saves of the half, though, and he parried a Bernardo piledriver away from goal to spark a counter-attack which ended when Ederson came racing off his line to beat Marcus Rashford to the ball.
Rashford looked the most likely for United in the opening 45 minutes and tried his luck with a dipping 30-yard strike which flew over the bar midway through the half, but the home side's sights of goal dried up as the game wore on.
Man City began to see more of the ball and gain a greater degree of control over the match after the half-hour mark, but it wasn't until just before half time that they carved out the first big chance of the contest.
A slick passing move involving Bernardo, David Silva and Sergio Aguero eventually ended with the ball at the feet of Sterling, who danced his way through a crowd of bodies inside the area only to see his tame finish kept out by De Gea - who crucially held on to the ball with Aguero lurking.
Aguero dragged a shot of his own wide of the far post moments later as the two sides went into the break still goalless, and City were dealt a blow soon after the restart when Fernandinho limped off injured after snuffing out a dangerous United attack.
Sane came on in his place, and the enforced change paid immediate dividends as Guardiola's side broke the deadlock in the 54th minute when Bernardo - who had dropped into a deeper position as a result of Sane's introduction - cut inside and took a shot early to beat De Gea at his near post.
City almost took the game away from United in the space of just two minutes when Aguero came close to a second moments later, but his curling effort at the end of another quick passing move clipped the outside of the post.
The breakthrough opened up the game and United should have restored parity just three minutes after falling behind when Kyle Walker's mistake allowed Rashford to play the ball across goal for Lingard, who somehow completely missed it from point-blank range when an open goal was gaping in front of him
It proved to be a costly miss as City doubled their advantage nine minutes later, although not without the help of an increasingly error-prone De Gea, who could only deflect Sane's shot into his own net when he should have saved it.
It was a colossal goal in the title race, and also a record-breaking one for Man City as they set a new landmark with their 157th strike of the season across all competitions - surpassing their own record from 2013-14.
Solskjaer responded by bringing on Romelu Lukaku, and the Belgian forced one low stop from Ederson with a cross into the six-yard box before fluffing his lines having been picked out on the edge of the area by Rashford moments later.
Man City were able to see out the game quite comfortably, though, as United slumped to a third consecutive defeat for the first time since September 2016 and made it three games in a row without scoring for the first time since October 2015.
The Red Devils - who had not lost at home in the league since August before tonight - remain three points off fourth place courtesy of Arsenal's defeat at Wolverhampton Wanderers this evening, and know that only victory will do when they host fellow top-four hopefuls Chelsea at Old Trafford on Sunday.
Man City, meanwhile, have now won more Premier League games at Old Trafford than any other visiting club, while Guardiola becomes the first away manager to have won three consecutive Premier League matches at the stadium.
More importantly, though, the win leaves City just three more victories away from retaining the title, and tonight's result could deal a substantial psychological blow to rivals Liverpool ahead of their match with Huddersfield Town on Friday night.
MAN UTD (5-3-2): De Gea; Young, Darmian (Sanchez 83'), Smalling, Lindelof, Shaw; Pereira (Lukaku 72'), Fred, Pogba; Rashford, Lingard (Martial 83')
MAN CITY (4-3-3): Ederson; Walker, Kompany, Laporte, Zinchenko; Gundogan (Danilo 89'), Fernandinho (Sane 51'), D Silva; Bernardo, Aguero (Jesus 89'), Sterling