Federico Chiesa gave Italy the lead with a fine curling strike on the hour mark.
But the much-maligned Morata, dropped to the bench for the first time in the tournament, was introduced as a substitute and slotted home with 10 minutes remaining after a neat one-two with Dani Olmo.
The winners will face England or Denmark, who play on Wednesday, in Sunday's final in London.