The Napoli forward sent Jack Butland the wrong way 87 minutes in after German official Deniz Aytekin used the VAR system to deem that debutant James Tarkowski had stamped on Federico Chiesa's foot in the box.
Butland was unable to keep out the spot kick, stopping England's run without conceding at 624 minutes and giving Italy a draw somewhat against the run of play.
Leading Serie A scorer Ciro Immobile wasted three chances inside the opening quarter of the match, including one with less than a minute played, as he failed to adjust his feet when played in over the top by Jorginho.
Immobile, with 24 goals in 26 league outings for Lazio this term, then caught John Stones napping but was unable to get a shot on target, before heading over Antonio Candreva's cross from close range.
Unlike with Immobile, though, Vardy would redeem himself moments later when blasting the ball past the reach of Donnarumma following some quick thinking from Jesse Lingard, who knocked a free kick into his teammate's path before Italy's defence could find their shape.
The Azzurri almost responded immediately, with Immobile curling wide once finding yet more gaps in the England defence and Marco Parolo smashed an attempt of his own over the crossbar.
Ashley Young saw an intended cross deflect inches wide of the target as England, scoreless in their last two Wembley friendlies, took a slender lead into the break.
A big block was required from Leonardo Bonucci to keep out Young's goalbound shot early in the second period, while Alex Oxlade-Chamberlain and a lively Raheem Sterling both had long-range attempts easily dealt with.
Two-and-a-half years on from his last international goal, Sterling lifted the ball high and wide from a promising opening as the Three Lions took complete control of proceedings.
Gareth Southgate, who names his provisional 35-man squad before his side are next back in action, brought on Bournemouth midfielder Lewis Cook for his senior bow with a quarter of the match left to play.
Jorginho then curled a free kick wide and Insigne failed to keep his volley on target for an Italy side winless in four, and currently without a permanent manager ahead of the next qualifying campaign.
Caretaker boss Luigi di Biagio talked of a new era for the Azzurri in the build-up to this game, though, and the late converted penalty from Insigne perhaps offers some hope of better days to come, while at the same time denying England a sixth successive clean sheet.
Whether the pen should have been awarded is up for debate, as the referee was initially happy with Tarkowski's challenge on Chiesa, only to review the incident on a pitchside monitor and point to the spot.
ENGLAND (3-4-3): Butland; Walker, Stones (Henderson 73'), Tarkowski; Trippier (Rose 60'), Dier, Oxlade-Chamberlain (Lallana 60'), Young; Lingard (Cook 71'), Sterling, Vardy (Rashford 70')
ITALY (4-3-3): Donnarumma; Zappacosta, Rugani, Bonucci, De Sciglio; Pellegrini (Gagliardini 79'), Jorginho, Parolo; Candreva (Chiesa 56'), Insigne, Immobile (Belotti 64')