Benfica trailed 3-2 following the first leg in Russia but made inroads when Maxi Pereira opened the scoring at Estadio da Luz in stoppage time of the first half with a nice finish from a clever Axel Witsel backheel.
That goal edged Jorge Jesus' men ahead on away goals with the visitors struggling to muster much up front with a total of just two shots on target directed at goalkeeper Artur.
Benfica sat deep as the tie looked to be safe but then managed to score a second on the counter in injury time when Nelson Miguel Castro Oliveira slotted home Bruno Cesar's well-weighted ball to tie up proceedings much to the delight of the home fans as Zenit crash out of the competition.
UEFA Champions League Round of 16 - second leg
Estado da Luz, Lisbon - 46,000