The hosts turned in a great display against the Russians and were able to overturn a one-goal deficit to go through in the Uefa competition
A goal from Maxi Pereira just seconds before half-time and another from Nelson Oliveira in injury time allowed Jorge Jesus' men to seal passage into the quarter-finals, having been rewarded for a combative display as they dominated from the first whistle.
The mach started out at a high pace, with Benfica enjoying the majority of possession in the first minutes, as expected.
Zenit had more players in midfield and more presence in this area than in the first leg in Russia, but that was not too much of a surprise, as Luciano Spalletti's side were unwilling to take any risks.
For the hosts, Axel Witsel was deployed in centre of the park as the replacement of suspended Pablo Aimar, and he filled the Argentine's shoes almost perfectly.
In the 14th minute, the Belgian, without too much room to operate, picked out a pass on the right to Bruno Cesar, who tried his luck from the edge of the box, but Vyacheslav Malafeev parried the ball away to safety.
Benfica were in control of proceedings and they came close to scoring again five minutes later, when Maxi Pereira played a one-two with Nicolas Gaitan and, from a tight angle, sent in a low shot which went across the face of the goal, with no one on hand to tap home.
Zenit looked happy just to watch Benfica play, but the visitors almost broke the deadlock in the 42nd minute, when Artur and Luisao were both unable to clear away the ball, which fell into the path of Roman Shirokov. The Russian midfielder aimed his shot at the bottom right corner, but Artur was able to save on the second attempt.
It was just a minor scare for Benfica, though, as the hosts broke the deadlock in added time. Witsel had his shot from inside the box saved by Malafeev, but on the rebound the Belgian produced a marvellous backheel to Maxi Pereira, who slotted home from close range.
Zenit looked much livelier after the break, when Spalletti introduced Danko Lazovic in Vladimir Bystrov's place, but while the Russians got closer to Artur's goal, they were still unable to create significant danger.
Oscar Cardozo had the chance to put the game to bed in the 67th minute when he picked up a misplaced pass, but with only Malafeev to beat, the Paraguayan sent his effort wide of the goal.
As the game wore on, Benfica tried to hold on to the lead, with Zenit unable to create the hosts any sort of problem.
But the home side were still able to double their lead in injury time, as Nelson Oliveira sent the ball past Malafeev after being played through by Bruno Cesar, albeit with the aid of a deflection.
It was a much-deserved victory for Benfica, who were in control of the match from start to finish. The Aguias will learn their next opponent on March 16, when the draw for the next stage is made.