Zlatan Ibrahimovic saknades i cupderbyt mot Inter på grund av skada. Kanske hade svensken också behövts. Trots ett flertal vassa chanser fick Milan inte hål på lokalrivalen i semifinalreturen på San Siro.
Första mötet slutade mållöst och det var med andra ord helt öppet inför tisdagskvällens batalj.
Men Lautaro Martinez var på spelhumör och redan efter tre minuter pricksköt han 1-0 på volley, ett stenhårt skott som fransmannen Maignan inte orkade hålla.
Kort före halvtidsvilan utökade den argentinska stjärnanfallaren ledningen då han fri med Maignan läckert chippade in bollen i nät.
Milan snuvades på mål efter VAR-granskning
Milan gav inte upp efter paus och i minut 66 reducerade Ismaël Bennacer – trodde han. Men det hårda skottet utanför straffområdet dömdes bort efter lång VAR-granskning. Det visade sig att mittbacken Pierre Kalulu stod i offsideposition och skymde Inters målvakt Samir Handanovic – och därmed inget mål för Milan där.
I stället punkterades tillställningen definitivt när Marcelo Brozovic med knappa tio minuter kvar frispelade inhopparen Robin Gosens som från nära håll rakade in 3–0 i öppen bur.
Juventus i förarsätet efter sista minuten-segern i Florens
Inter är klart för final och där väntar vinnaren mellan Juventus och Fiorentina, ett möte som spelas under onsdagskvällen. Den första matchen lagen emellan slutade med en 1-0-viktoria för Juventus i Florens efter ett självmål av hemmalaget i 91:a minuten.
Startelvorna i cupsemin på San Siro
Inter: Handanovic - Skriniar, De Vrij, Bastoni - Darmian, Barella, Brozovic, Calhanoglu, Perisic - Correa, Martinez.
Milan: Maignan - Calabria, Kalulu, Tomori, Hernandez - Bennacer, Tonali - Saelemaekers, Kessié, Leão - Giroud.