I Napoli gjorde Arkadiusz Milik sin första match från start i Napoli-tröjan sedan skadan han drog på sig i höstas. Och det skulle också börja bra för de ljusblåa.
I den 37:e minuten tog Napoli ledningen i matchen genom José Callejon efter att spanjoren mött ett inlägg med ett volleyskott. Ledningen stod sig halvleken ut, men momentum i matchen skulle snabbt skifta i den andra halvleken.
Knappt två minuter in i den andra halvleken fick dock Juventus chansen att kvittera på straff efter att Paulo Dybala gått omkull i straffområdet. Dybala tog själv hand om straffen och satte dit 1-1 för Juventus.
I den 64:e minuten kunde Juventus också ta ledningen. Gonzalo Higuain satte bollen i mål från en snäv vinkel, och nätade därmed mot sin gamla klubb, klubben han lämnade i somras.
Bara några minuter efter 2-1 fick Juventus straff på nytt efter att Pepe Reina gjort omkull Juan Cuadrado i straffområdet. Paulo Dybala klev fram på nytt - och gjorde inte något misstag heller denna gång och satte 3-1 för Juve.
Napoli-spelaren Lorenzo Tonelli, som inte fanns med på planen på grund av skada, var inte nöjd med att Juventus fick två straffar med sig, och twittrade "Det är en skandal" strax efter Dybalas 3-1-mål.
Juventus 3-1-ledning stod sig matchen ut, vilket gör att Napoli fortsatt har förlorat samtliga matcher man har spelat Juventus Stadium, nu sju stycken totalt. Turin-laget har nu en fördel inför returmötet 5 april på San Paolo i Neapel.
I den andra semifinalen möts Roma och Lazio i ett Romderby, med det första mötet i morgon kväll.
Startelvor:
Juventus: Neto - Barzagli, Bonucci, Chiellini - Lichtsteiner, Khedira, Pjanic, Asamoah - Dybala - Mandzukic, Higuain.
Napoli: Reina - Maggio, Albiol, Koulibaly, Strinic - Rog, Diawara, Hamsik - Callejon, Milik, Insigne.