Benfica’s Nico Gaitan, right, scores his side's first goal during their Champions League League Round of 16 second leg soccer match between Zenit and Benfica at Petrovsky stadium (Photo: AP)
Benfica, leading 1-0 from the first leg of the round of 16 tie and fielding a makeshift defence, fell behind in the 69th minute to a Zenit goal scored by Brazilian striker Hulk.
With Zenit pressing for a second, however, Benfica snatched an 85th-minute equaliser when Gaitan was first to react after Raul Jimenez's long-range drive hit the bar and he headed in from the rebound.
Substitute Talisca scored with the last kick of the game to leave Zenit waiting for their first ever quarter-final place. Twice former European champions Benfica reached the last eight for the first time since 2012.
The first hour was a cagey affair with few chances, although Benfica nearly snatched an away goal in the fourth minute when Jonas's curling free kick was tipped over the bar by Yuri Lodygin.
Zenit came to life after a double substitution by coach Andre Villas-Boas just before the hour and immediately created chances.
They went ahead in the 69th minute after Yuri Zhirkov, who appeared to foul Nelson Semedo, broke down the left and crossed into the middle where Hulk, who up to that point had a dismal game, headed in.
Lodygin saved Zenit when he brilliantly turned away Victor Lindelhof's header, but Benfica were on the ropes and Zenit nearly grabbed a second when goal when Artem Dzyuba ran through the middle of the Benfica defence but his shot was blocked by Ederson.
Gaitan's goal would have been enough for Benfica to advance but the visitors completed a 3-1 aggregate win six minutes into added time when Gaitan burst forward and a lucky bounce presented Talisca with a chance which the Brazilian crashed home in style.
(For more sports news and updates, follow Ahram Online Sports on Twitter at @AO_Sports and on Facebook at AhramOnlineSports.)