Kevin De Bruyne and Riyad Mahrez both scored twice to give the home side a crucial victory at Etihad Stadium.
Jadon Sancho was the only scorer for Manchester United, whose eight-game unbeaten run in the league ended with this defeat.
With 69 points, Manchester City extended their lead in the league to six points over Liverpool, who have one match in hand.
Manchester United are fifth with 47 points.