Nicolas Otamendi scored the winner in the second half to cancel out Marcus Rashford's equaliser after David Silva had given City the lead.
City set a record with 14 consecutive wins in England's top flight in a single season, per OptaJoe.
The big team news involved City manager Pep Guardiola's decision to leave Sergio Aguero on the bench, with James Robson of the Manchester Evening News providing both lineups:
Despite being the home side, United were content to sit deep early on and wait for their moments on the break. By contrast, City were more proactive, as BBC Match of the Day helped illustrate:
A key to City's dominance of possession was the rotation of their front three. It involved left-footer Leroy Sane's switching to the right flank, while winger Raheem Sterling often took up a place through the middle and Gabriel Jesus drifted left.
The movement kept United's back four stretched and forced holding midfielders Nemanja Matic and Ander Herrera away from their man-marking responsibilities on Silva and Kevin De Bruyne.
United's struggle to get on the ball was summed up by this damning statistic from WhoScored.com:
City finally made their endeavour count two minutes before the break when Silva poked the ball in after a scramble from a corner.
The goal should have left the visitors cruising, but Rashford pounced on a rare mistake at the back, when Fabian Delph let the ball roll beyond him, to equalise in first-half stoppage time.
It was a brutal reminder to City to make more of their territorial dominance. For all their possession, the visitors had too often lacked a cutting edge during the opening 45 minutes, making the decision not to start Aguero tougher to understand.
City were forced into a tricky change at the break, as Vincent Kompany came off for Ilkay Gundogan and holding midfielder Fernandinho was forced to play as a centre-back. United also made a change in defence, as Victor Lindelof replaced Marcos Rojo.
The leaders were back in front on 53 minutes when Romelu Lukaku cleared Silva's free-kick delivery against the back of Chris Smalling. Otamendi made the most of the adjustment to finish well past David De Gea.
For all their pedigree keeping possession, City have been surprisingly effective at finding more direct routes to goal this season:
Soon after, Guardiola took Jesus off for natural centre-back Eliaquim Mangala and moved Fernandinho back into midfield alongside Gundogan.
It was Zlatan Ibrahimovic time in the 75th minute when the big striker was introduced for Jesse Lingard.
Getting booked was Herrera's last contribution, as Mourinho hooked him for Juan Mata.
The substitute should have drawn United level moments after coming on, but he was thwarted by an astonishing double save from Ederson. City's goalkeeper denied Lukaku from close range and then reacted in a flash to prevent Mata from netting the rebound.
It proved to be United's best chance for a point as City saw out four minutes of stoppage time to increase their lead at the top to double digits. By contrast, United saw their title hopes all but dashed after not being proactive enough in a match they had to win.
Despite City's superiority in possession, Mourinho branded them a "lucky team" during an interview with Sky Sports (h/t Gerard Brand of the broadcaster's official website).
He also had a different view of Herrera's yellow card for diving: "Clear penalty. I am sorry for us, sorry for Michael (Oliver, the referee). I think he had a good performance, but it's a clear penalty."
Mourinho felt aggrieved, but Guardiola is delighted to have City playing such attractive football, per Sky Sports (h/t Tom Doyle of the London Evening Standard): "We can play this way in England. People said we couldn’t play the way we did in Barcelona in England, but it is possible and we did it."
There are shades of Guardiola's greatest Barca teams in the style of this City side. The title surely beckons for a squad so committed to taking care of the ball and seizing the initiative in every game, regardless of the opposition.