His cool finish, following a superb one-two with Dani Olmo, cancelled out Federico Chiesa's brilliant strike on the hour.
When spot-kicks arrived, Manuel Locatelli's tame miss provided the worst possible start for Italy, but Olmo blazed over to maintain parity.
After five successful penalties in succession, Donnarumma guessed the right way to deny Morata, leaving Jorginho's usually reliable hop, skip and jump technique to book Italy's place in Sunday's final.
The Azzurri have been among the front-runners since they opened the tournament on June 11 with a stunning 3-0 win over Turkey, but they haven't always been fancied by the bookies.
Sporting Life readers who followed Jake Pearson's advice to back them each-way to win Euro 2020 (12/1 in our exclusive betting guide, 11/1 in our antepost preview) will have been richly rewarded for their faith, not only because of Mancini's side's success, but because by the time the tournament kicked off they had already come in as short as 9/1.
Now only England or Denmark stand between Italy and a second European Championship - and first since 1968.
It was a night on which there was no real loss had you taken up both antepost options, though, as Spain (8/1) were the other outright tip.
And they undoubtedly provided Italy with their toughest test yet. In fact, Luis Enrique's men were the better side.
Spain deserved to win over the course of the 120 minutes, but poor finishing, as has been the case for much of the tournament, ultimately cost them and they were unable to replicate their penalty shoot-out victory against Switzerland in the last eight.