Semifinalen i ligacupen bjöd på Manchester-derby och Uniteds svenske försvarare Victor Nilsson Lindelöf var tillbaka i startelvan efter att ha missat de två senaste matcherna.
Semifinalen skulle inledas dramatiskt. Redan efter bara någon minut spelad tog United ledningen efter att bollen studsade på två City-spelare och sedan in i mål - men bortdömt för offside. Bara minuten senare gjorde även City ett offside-mål. Kort därpå hade United ett superläge men Steffen i City-målet stod för en superräddning.
Om den dramatiska inledningen var över där? Nej, för minuten senare avlossade Kevin De Bruyne ett pressat skott rakt i stolpen och kort efter det fick City ännu ett bortdömt mål på grund av offside.
Men nollan skulle spräckas. Fem minuter in i den andra halvleken fick City en frispark strax utanför straffområdet där John Stones styrde in bollen via knät. 26-åringens första mål sedan november 2017. City i ledning i semifinalen.
City skulle utöka ledningen. Wan-Bissaka försökte rensa ett inspel men misslyckades och det utnyttjade Citys mittfältare Fernandinho som slog in 0-2 på volley.
United låg därefter på för ett reduceringsmål men City stod rätt i positionerna. Efter fyra tilläggsminuter blåste domaren för fulltid.
Manchester City vinnare och ställs därmed mot Tottenham i finalen av ligacupen. Finalen spelas på Wembley den 25 april.
- Att spela stora matcher är något jag trivs med, säger Citys målskytt John Stones enligt BBC och fortsätter:
- Vi skapade så många chanser, bra chanser. Fantastiskt spel för att komma in i deras box och i slutet av dagen gjorde vi jobbet.
Om sitt mål:
- Jag försökte bara följa bollen. Deras backlinje var hög. Jag jobbar hårt, försöker bara spela så många matcher jag kan. Jag vill ge tillbaka till laget.
Startelvor:
Manchester United: Henderson, Wan-Bissaka, Lindelof, Maguire, Shaw, McTominay, Pogba, Fred, Fernandes, Rashford, Martial
Manchester City: Steffen, Cancelo, Stones, Dias, Zinchenko, Fernandinho, Gundogan, De Bruyne, Mahrez, Foden, Sterling