Före avspark hyllades den avlidne tidigare Milanägaren Silvio Berlusconi. Den kontroversielle fotbollspampen hedrades med en tyst minut.
Några tysta inledningsminuter blev det däremot inte på planen. Spanien kopplade ett tidigt grepp när Yeremi Pino tog tillvara på slarv från italienske kaptenen Leonardo Bonucci och satte 1–0 i den tredje minuten.
Italien kvitterade på straff kort senare genom Ciro Immobile.
Men när alla väntade på förlängning dök inhoppande Joselu upp och petade in 2–1 till Spanien, två minuter före full tid.
– Jag är väldigt glad för allas skull, vi förtjänar detta. Vi spelade med bra intensitet och vi kan vara nöjda över att ha nått finalen. Det är så här vi måste spela för att nå framgång, säger högerbacksveteranen Jesus Navas enligt AFP.
Italienska förbundskaptenen Roberto Mancini tycker att nederlaget var välförtjänt.
– Spanien förtjänade att vinna även fast segermålet kom sent.
För Spanien väntar nu final mot Kroatien på söndag i Rotterdam.