The Azurri have been among the frontrunners since they opened the tournament on June 11 and they will be there when it finishes against either England or Denmark on Sunday, hoping to win a second European Championship and first since 1968.
They faced their toughest test yet against Spain, who were the better side, but when it ended 1-1 after 120 pulsating minutes, Donnarumma saved Alvaro Morata's penalty and Chelsea midfielder Jorginho sent Italy through to another final.
Morata went from hero to villain as he had earlier climbed off the bench to equalise for Luis Enrique's side with 10 minutes of normal time remaining - becoming his country's all-time leading goalscorer at the Euros with six - after Federico Chiesa had put Italy in front against the run of the play.
Spain deserved to win over the course the 120 minutes, but poor finishing cost them and they were unable to replicate their penalty shootout victory against Switzerland in the last 16.
Roberto Mancini's men were hanging on in extra time and looked to have run out of steam, but they will now enjoy an extra day's recovery and return to Wembley hoping to cap an impressive tournament where they have found different ways to win.
Penalties are cruel - Mancini
Italy boss Roberto Mancini felt some sympathy for Spain after huis side reached the final of Euro 2020.
"It was a tough team, Spain are a great side who play really well. We didn't play the way we usually do, but fought hard and knew it'd be like this. Penalties are cruel," Mancini told RAI Sport.
Jorginho keeps his cool
Azzurri set Euros record
Including the qualifying rounds, Italy have won each of their last 16 European Championship matches, a competition record. They also extended their unbeaten run in all internationals to 33 games.
Stat of the day
Spain's defeat means that still no team has ever won two penalty shootouts at the same European Championship.