Pep Guardiola’s side blew the hosts away in a sublime opening 45 minutes in which Bernardo Silva scored with a sensational strike and set one up for Riyad Mahrez, before Kevin De Bruyne forced Andreas Pereira to concede an own goal.
It became a more even contest after the break and Marcus Rashford’s breakaway goal reduced the deficit 20 minutes from time, which will no doubt have given United hope ahead of the second leg.
But it was City’s night and a dominant display means we deservedly return to the Etihad Stadium with a healthy two goal lead.
United’s pace on the counter-attack had proved City’s undoing in December’s Premier League defeat, but Guardiola said beforehand he would not change his approach at Old Trafford.
The visitors received an early reminder of that threat when Rashford skipped past Nicolas Otamendi in the opening exchanges, but it proved to be a false alarm in a first half which belonged to the Boys in Blue.
The Portuguese schemer was the architect of everything good and opened the scoring with a goal worthy of a game of such significance.
Collecting Kyle Walker’s square pass 30-yards from goal, he checked inside on the edge of the area before unleashing an unstoppable drive into the top left corner via the underside of the crossbar.
More good work from Walker saw Raheem Sterling have two efforts blocked, before Bernardo produced a second slice of magic.
His slide rule pass from halfway was perfectly weighted for Mahrez, who received a helping hand from the outstretched leg of Victor Lindelof and with David De Gea caught in no man's land, the Algerian rounded him with ease to add the second.
Six minutes later a slick counter-attack looked as if we would be out of sight.
The Belgian left Phil Jones floundering with a drop of the shoulder, before drilling the ball at De Gea and watching it rebound onto Pereira’s leg and into the empty net.
A wayward 30-yard strike from the unfortunate Brazilian midfielder was the best United could muster by way of a response, whilst Williams’ tame effort immediately after the restart suggested it would remain a comfortable night for City.
Though we continued to be largely in control, the hosts were spirited in the second half to gain more of a foothold in the game and after Mahrez’s trickery forced De Gea into a good save with his feet, they were rewarded with a goal.
Again, it came from a counter-attack.
Substitute Angel Gomes nipped in to steal De Bruyne’s underhit pass off Rodrigo’s toes and when Rashford was freed by Mason Greenwood’s through ball, the United skipper picked out the bottom left corner.
The Reds’ No.10 went for the spectacular late on, hitting a dipping effort from 30-yards after the City defence backed off, but it was too close to Claudio Bravo, who saved to ensure the scoreline reflected City’s dominance across the 90 minutes.
Man of the Match: Bernardo Silva
This was a performance of the highest quality from the midfielder, who, it should not be forgotten, was asked to play in a less familiar position as our most advanced attacker.
He was everywhere and United couldn’t get a grip of him. It was a fantastic goal, a brilliant assist for the second and he was involved in the third, too.
This was Mahrez’s 19th start in all competitions this season and in those games he has directly contributed to 15 goals, scoring six times and providing nine assists.
“In general, it was an incredible performance and just a fantastic result for us. Tonight we can be more than satisfied to come here to Old Trafford and win.”
What it means
City’s healthy lead means United must win by at least three goals to prevent us from booking our place in a third consecutive Carabao Cup final.
Away goals do not count in this tie, so should United draw level on aggregate, the game would go straight to penalties at the end of 90 minutes.
We return to Premier League action on Sunday, with a trip to Aston Villa that gets under way at 16:30 (UK).
The second leg of this semi-final takes place on Wednesday 29 January, with kick-off at 19:45 (UK).