Italien inledde matchen starkt och med sitt taktiskt smarta spel tog man bort de spanska stjärnorna Saul Niguez och Marco Asensio.
Den första halvleken var jämn och relativt chansfattig, annat kan man säga om den andra.
De italienska försvarsspelet öppnades upp under den andra halvleken, mycket på grund av spanjorernas skicklighet.
I den 53:e minuten hittade Dani Ceballas fram till Saul Niguez som snyggt placerade in 1-0 för Spanien.
Läget skulle bli mörkare för italienarna när Roberto Gagliardini i ren frustration drog på sig sitt andra gula kort efter knappa timmens spel.
Italien visade dock styrka och bara tre minuter efter det röda kortet kvitterade man något turligt genom anfallsstjärnan Federico Bernardeschi.
Glädjen blev kortvarig för italienarna. Saul Niguez fick på en riktig projektil efter 65 minuters spel och Donnarumma i det italienska målet var chanslös.
Atlético-stjärnan var inte klar där. Nio minuter efter 2-1-målet hade han fullbordat sitt hattrick.
Resterande del av matchen spelade spanjorerna av och italienarna agerade stundtals i ren frustration genom flertalet gånger sparka ner de spanska spelarna.
Matchen slutade 3-1 och Spanien är därmed klart för sin tredje final de senaste fyra mästerskapen. Där väntar Tyskland som tidigare under tisdagen besegrade England på straffar.
Startelvor:
Spanien: Arrizabalaga - Bellerin, Meré, Vallejo, Jonny - Ceballos, Llorente, Saul Niguez - Deulofeu, Sandro, Asensio
Italien: Donnarumma - Calabria, Caldara, Rugani, Barreca - Benassi, Gagliardini, Pellegrini, Chiesa - Petagna, Bernardeschi