Inter Milan took a big step towards reaching the Champions League final as they beat their city rivals in a thrilling Milan derby at San Siro.
In a game that had been anticipated for weeks in Italy and was witnessed at the ground by a vocal and passionate 80,000-strong crowd, Inter made the perfect start when Edin Dzeko volleyed home in the eighth minute.
The goal silenced the Milan fans - the designated home side for this tie in the stadium the two sides share - as they significantly outnumbered the Inter supporters.
And the hosts were stunned further three minutes later when Henrikh Mkhitaryan swept a shot beyond Mike Maignan after being set up by Federico Dimarco.
Hakan Calhanoglu hit the woodwork as Inter threatened to get a third, but there was hope for AC Milan when referee Jesus Gil Manzano reversed a decision to award the visitors a penalty, deeming Lautaro Martinez to have dived after consulting the pitchside monitor.
Inter dropped their tempo in the second half as they looked to protect their two-goal advantage and it almost presented AC Milan with a lifeline as Sandro Tonali struck the post with a shot from the edge of the box.
But Inter held firm and are in a strong position to reach the final - where they will face either Manchester City or Real Madrid - when the two sides meet again at San Siro for the second leg on Tuesday, 16 May (20:00 BST).
Inter take big step to end long wait
Inter Milan are three times winners of the European Cup or Champions League, but have not reached the final since they last lifted the trophy 13 years ago.
This is the furthest they have been in the competition since then and, despite the intimidating atmosphere created by the overwhelming number of AC Milan fans, they were determined to push on.
Inter boss Simone Inzaghi opted for the 37-year-old Dzeko to lead the attack, with Romelu Lukaku on the bench, and it didn't take long for that decision to be vindicated as the former Manchester City striker steered home a brilliant finish from a corner.
AC Milan knocked Tottenham and Serie A champions Napoli out of the Champions League on their way to the semi-finals but looked capable of being opened up by Inter with every attack and would have been pleased to reach half time just 2-0 down.
They were better after the break but did not manage a shot on target until the 81st minute - a deflected Junior Messias effort - and will need to be much, much better if they are to deny Inter a place in the Champions League final.
Player of the match
DzekoEdin Dzeko
AC Milan
Squad number27Player nameOrigi
Squad number19Player nameHernández
Squad number9Player nameGiroud
Squad number16Player nameMaignan
Squad number24Player nameKjaer
Squad number23Player nameTomori
Squad number2Player nameCalabria
Squad number8Player nameTonali
Squad number10Player nameDíaz
Squad number33Player nameKrunic
Squad number30Player nameJunior Messias
Squad number4Player nameBennacer
Squad number20Player nameKalulu
Squad number56Player nameSaelemaekers
Squad number32Player namePobega
Squad number28Player nameThiaw
Inter Milan
Squad number9Player nameDzeko
Squad number22Player nameMkhitaryan
Squad number90Player nameLukaku
Squad number23Player nameBarella
Squad number10Player nameLa Martínez
Squad number20Player nameÇalhanoglu
Squad number95Player nameBastoni
Squad number2Player nameDumfries
Squad number32Player nameDimarco
Squad number15Player nameAcerbi
Squad number36Player nameDarmian
Squad number6Player namede Vrij
Squad number77Player nameBrozovic
Squad number5Player nameGagliardini
Squad number11Player nameCorrea
Squad number24Player nameOnana
Line-ups
AC Milan
Formation 4-2-3-1
16Maignan
2Calabria24Kjaer23Tomori19Hernández
33Krunic8Tonali
10Díaz4Bennacer56Saelemaekers
9Giroud
16Maignan2CalabriaSubstituted forKaluluat 82'minutes24KjaerSubstituted forThiawat 59'minutes23TomoriBooked at 64mins19Hernández33KrunicBooked at 45mins8Tonali10DíazSubstituted forPobegaat 82'minutes4BennacerSubstituted forMessiasat 18'minutes56SaelemaekersSubstituted forOrigiat 60'minutes9GiroudSubstitutes
5Ballo-Touré12Rebic20Kalulu27Origi28Thiaw30Messias32Pobega46Gabbia83Mirante90De Ketelaere92NavaInter Milan
Formation 3-5-2
24Onana
36Darmian15Acerbi95Bastoni
2Dumfries23Barella20Çalhanoglu22Mkhitaryan32Dimarco
10La Martínez9Dzeko
24Onana36Darmian15Acerbi95Bastoni2Dumfries23Barella20ÇalhanogluSubstituted forGagliardiniat 78'minutes22MkhitaryanBooked at 45minsSubstituted forBrozovicat 63'minutes32DimarcoSubstituted forde Vrijat 71'minutes10La MartínezSubstituted forCorreaat 78'minutes9DzekoSubstituted forLukakuat 70'minutesSubstitutes
1Handanovic5Gagliardini6de Vrij8Gosens11Correa12Bellanova14Asllani21Cordaz33D'Ambrosio46Zanotti77Brozovic90LukakuReferee:Jesús Gil ManzanoAttendance:75,532Live Text
Match ends, AC Milan 0, Inter Milan 2.
Second Half ends, AC Milan 0, Inter Milan 2.
Foul by Pierre Kalulu (AC Milan).
Joaquín Correa (Inter Milan) wins a free kick in the defensive half.
Delay over. They are ready to continue.
Delay in match because of an injury Roberto Gagliardini (Inter Milan).
Attempt saved. Tommaso Pobega (AC Milan) left footed shot from outside the box is saved in the centre of the goal. Assisted by Sandro Tonali.
Sandro Tonali (AC Milan) wins a free kick in the defensive half.
Foul by Nicolò Barella (Inter Milan).
Foul by Malick Thiaw (AC Milan).
Roberto Gagliardini (Inter Milan) wins a free kick on the right wing.
Foul by Divock Origi (AC Milan).
Denzel Dumfries (Inter Milan) wins a free kick in the defensive half.
Attempt missed. Theo Hernández (AC Milan) left footed shot from outside the box is high and wide to the left from a direct free kick.
Theo Hernández (AC Milan) wins a free kick in the attacking half.
Foul by Roberto Gagliardini (Inter Milan).
Malick Thiaw (AC Milan) wins a free kick in the defensive half.
Foul by Roberto Gagliardini (Inter Milan).
Substitution, AC Milan. Tommaso Pobega replaces Brahim Díaz.
Substitution, AC Milan. Pierre Kalulu replaces Davide Calabria.