Two stunning strikes from Francisco Ferreira and Alex Grimaldo in extra time ensured Benfica will be in Friday's quarter final draw at the expense of Dinamo Zagreb.
The Croatian side took a 1-0 lead to the Estadio da Luz and set out to frustrate the hosts - which they did to great success for the majority of the match.
However substitute Jonas snatched a vital aggregate equaliser with 20 minutes of play remaining to force additional time.
And four minutes after the end of normal time, centre-back Francisco Ferreira lashed home a 20 yard strike to give the Portuguese side the lead.
Petar Stojanovic then picked up two yellow cards in quick succession for Zagreb before Alex Grimaldo scored a scintillating 30 yard drive to leave the score on the night 3-0, and 3-1 on aggregate.
Zagreb held a narrow advantage from the first leg thanks to a Bruno Petkovic penalty, and they set out their stall to protect that lead.
Benfica dominated possession - amassing well over 60 per cent - but they lacked a cutting edge and the in the first period the Croatians appeared comfortable.
Manager Bruno Lage rang the changes at the interval, with Grimaldo coming on for Ribeiro in defence and Jonas replaced Andrija Zivkovic, and they proved to be the difference.
Jonas finally pulled the hosts level on 70 minutes with sliced right-footed half-volley after a deft knock-down by Pizzi.
The momentum had clearly swung towards the hosts and they capitalised four minutes into extra time in emphatic fashion.
Centre-back Ferreira picked up possession on the edge of the area and carved a half yard of space for himself before firing home a brilliant effort past Zagreb stopper Dominik Livakovic.
Stojanovic was then given two yellow cards in quick succession, and just seconds later, the tie was all but over.
Grimaldo picked up the ball 35 yards from goal and let fly with a rasping left-foot shot. The ball flew like a guided missile into the top corner, leaving Livakovic rooted to the spot.
MATCH FACTS AND LEAGUE TABLE
Vlachodimos; Almeida, Dias, Ferreira, Ribeiro (Grimaldo, 46); Pizzi (Fernandes 119), Gabriel, Fejsa, Zivkovic (Jonas, 46); Jota (Felix 62), Rafa Silva
Subs not used:
Svilar, Cervi, Samaris
: Bruno Lage
Dinamo Zagreb (4-3-3):
Livakovic; Stojanovic, Theophile-Catherine, Dilaver, Rrahmani; Gojak (Atiemwen 97), Moro, Olmo; Kadzior (Situm 75), Petkovic (Gavranovic 86), Orsic (Peric 109)
Moro, Petkovic, Theophile-Catherine, Stojanovic
Subs not used:
Zagorac, Majer, Leskovic,
: Nenad Bjelica