Benfica held a narrow 1-0 lead from the first leg in Germany thanks to Oscar Cardozo's goal but Leverkusen arrived in Portugal on the back of a 2-1 win over Augsburg in the Bundesliga and were inspired by midfielder Stefan Kiessling.
Dutch winger Ola John opened the scoring after an hour, Andre Schurrle equalised with 15 minutes left and less than two minutes later Nemanja Matic put the home side back in front for a lead they held until the final whistle.
The visitors nearly went ahead in the second minute when from a corner Sebastian Boenisch's shot was kept out by Artur.
Leverkusen were unlucky again when Daniel Carvajal's cross picked out Kiessling but his shot hit the post.
Andre Almeida crossed for Nicolas Gaitan but his drilled header was saved by Leverkusen goalkeeper Bernd Leno.
Kiessling had a shot blocked by Anderson but from the corner the visitors failed to carve out a clear chance.
Leverkusen repelled two Benfica attacks in quick succession with both sides still looking to take control of the tie.
Schurrle was denied twice in the space of two minutes as half-time approached.
First he saw his shot saved with his feet by Artur and then the Benfica goalkeeper was beaten only for the ball to hit the post from Schurrle's next effort.
Schurrle saw a shot from 20 yards saved by Artur.
Benfica grabbed the opening goal to stretch their aggregate lead as John fired a shot into the top-right corner.
Artur pulled off two fine saves to deny Leverkusen, parrying an effort from Simon Rolfes and from the resulting corner keeping out a 20-yard curling effort from Schurrle.
Schurrle finally found the target when he fired into the bottom corner of the goal following Kiessling's header.
But they were level in the leg for less than two minutes as Benfica retook the lead, Eduardo Salvio crossing from the right and Nemanja Matic finding the target with a header to set up a last 16 meeting with Bordeaux.