Italy needed extra time to see off battling Austria at Wembley and set up a Euro 2020 quarter-final against Belgium or Portugal.
Austria marked their first appearance in the knockout stage of the European Championship with a tireless performance to give their much-fancied opponents a scare.
Marko Arnautovic had a headed goal disallowed after a VAR check for offside in normal time when the game was goalless before goals from substitutes Federico Chiesa and Matteo Pessina sent Italy through.
Chiesa showed terrific technique to bring the ball down and beat Daniel Bachmann from an angle while Pessina, who scored in the group game against Wales, doubled the score from range.
Austria pulled a goal back through Sasa Kalajdzic’s brave header, the first goal Italy have conceded in 12 games, but the Azzurri march on.
Italy had the best of the first-half chances as Nicolo Barella was denied by Austria’s Watford keeper before Ciro Immobile struck the post from 25 yards.
Austria produced a terrific defensive display to frustrate the four-time world champions, while creating opportunities of their own.
Arnautovic put one chance over the bar and, with another, fired straight at the keeper, while David Alaba went close from a free-kick before the disallowed goal.
Italy will meet the winners of Sunday’s last-16 game between Belgium, the top-ranked side in the world, and holders Portugal in the quarter-finals on 2 July.