Bruno Fernandes converted a penalty after 101 seconds after a clumsy foul by Gabriel Jesus, while Luke Shaw was the unlikely scorer as the visitor doubled its lead in the 50th minute.
The result means Ole Gunnar Solskjaer has once again come out on top against Pep Guardiola, in the process becoming the first United boss to win each of his first three away trips in all competitions at the Etihad Stadium.
City may still hold an 11-point cushion at the summit but missing out on setting a new club record of 29 games unbeaten will sting, particularly considering the opposition. This is its first setback since a 2-0 reverse at Tottenham on 21 November, 2020.
United had not scored in its three previous outings ahead of the match, yet was gifted the chance to end that barren run when Jesus – retained in the Guardiola's starting XI following a brace in the 4-1 win over Wolves – carelessly clipped Anthony Martial.
The Brazilian was nearly bailed out by compatriot Ederson, yet the goalkeeper was only able to palm Fernandes's low effort from the spot into the net.
Initially flustered at falling behind for the first time in 20 league games, City eventually recovered from the early setback to assume control of proceedings.
Oleksandr Zinchenko tested Dean Henderson – again playing with David de Gea away on paternity leave – while Rodri struck the angle joining crossbar and post with a rising drive early in the second half.
However, it was United who grabbed the pivotal second goal in the game. Shaw carried the ball from deep and then continued his forward run after giving possession to Marcus Rashford, allowing the left-back to take the return pass and drag a low shot through Rodri's legs and into the far corner.
City huffed and puffed but was unable to find a way to blow the United defence down, not aided by managing to put just five of its 21 attempts on target. While seemingly destined to finish the campaign on top of the table, its was second best to its Manchester rival.