City stays third but are now 14 points behind leaders Liverpool, who won at Bournemouth. United move up to fifth.
Marcus Rashford’s first-half penalty, which was awarded after a VAR check, put United ahead.
Anthony Martial scored the second with a left-foot shot and Nicolas Otamendi replied with a late header for City.
United’s win was no more than Ole Gunnar Solskjaer’s side deserved after they repeatedly carved the hosts’ defense apart in the opening stages.
Some incisive play saw Rashford hit the crossbar, while Daniel James and Martial could have added to the visitors’ tally.
Gabriel Jesus missed an excellent chance to score for the City – heading wide from six yards – as they lost two home matches in a season for the first time under manager Pep Guardiola.
My Man Of The Match – Aaron Wan Bissaka
MySportDab Video Highlights;
FT: Manchester City 1-2 Manchester United
Who Is Your Man Of The Match?