Sevilla and Real Betis set up a mouthwatering derby in the last 16 of the UEFA Europa League with victories on Thursday night.
Dare Vrsic pulled one back in stoppage time for the visitors, but it did not affect the tie.
Betis claimed an impressive 2-0 win at Rubin Kazan to go through 3-1 on aggregate.
Nono put the visitors ahead on the stroke of half-time and Ruben Castro grabbed a second shortly after the hour mark.
Napoli and Porto both survived scares to progress.
The Italians, following a goalless first leg, won 3-1 at home to Swansea City, but the game was tougher than the scoreline suggested.
Next up for Napoli are Porto, who came from 2-0 and 3-2 down to draw 3-3 at Eintracht Frankfurt and advance on away goals after the tie ended 5-5 on aggregate.
Meier struck again to put Eintracht back in pole position to progress, but substitute Nabil Ghilas' 86th-minute goal turned the tie back in the Portuguese side's favour.
Elsewhere, two sides who came into the competition from the Champions League fell by the wayside as Shakhtar Donetsk and Ajax crashed out.
Shakhtar went down 2-1 at home to Viktoria Plzen, first-half goals from Daniel Kolar and Milan Petrzela putting the Czechs in charge.
Luiz Adriano's 89th-minute consolation meant it finished 3-2 to Plzen on aggregate.
Ajax were as good as out following their 3-0 home defeat to Salzburg and things got little better for them in the second leg as they lost 3-1.
The Austrians scored three second-half goals through a Mike van der Hoorn own goal, Sadio Mane and Jonathan Soriano - adding to his first-leg brace, which included a goal from the halfway line. Davy Klaassen grabbed a late consolation for the Amsterdammers.
Salzburg play Basle in the last 16 after the Swiss side won 3-0 at home to Maccabi Tel-Aviv.
After a goalless first leg in Israel, a Valentin Stocker strike and a Marco Streller brace earned Basle a comfortable win.
Lazio were beaten 4-3 on aggregate by Ludogorets Razgrad after they threw away a two-goal lead and conceded an 89th-minute equaliser in a 3-3 draw in Bulgaria.
The Romans looked to have turned around their home-leg deficit when goals from Keita Balde, who scored inside the opening 18 seconds, and Brayan Perea after 54 minutes put them 2-0 up on the night.
Roman Bezjak and Hristo Zlatinski brought it back to 2-2, only for Miroslav Klose to put Lazio back in front after 83 minutes.
But 85th-minute substitute Juninho Quixada struck four minutes after coming on to put Ludogorets through.
Juventus sent up an enticing last-16 meeting with Serie A rivals Fiorentina.
Antonio Conte's men won 2-0 in Turkey at Trabzonspor thanks to first-half goals from Arturo Vidal and Dani Osvaldo to seal a 4-0 aggregate victory.
La Viola also held a healthy lead from the first leg against Esbjerg, 3-1, and completed the job with a 1-1 home-leg draw.
Josip Ilicic scored a free-kick early in the second half and Mikkel Vestergaard's well-taken stoppage-time goal was mere consolation.
Adebayor sends Spurs through
Tottenham Hotspur set up a clash with Benfica after coming from 2-0 down on aggregate to go through 3-2 following a 3-1 win at White Hart Lane on Thursday.
Spurs looked on their way out when Roman Zozulya doubled the Ukrainians' aggregate lead just after the break.
But Christian Eriksen's free-kick got the hosts back in the contest before Zozulya's 62nd-minute red card for a headbutt on Jan Vertonghen changed the match.
Emmanuel Adebayor scored twice in five minutes to give Tim Sherwood's side the three they needed.
Benfica found things far easier at home to PAOK Salonika, winning 3-0 to go with their 1-0 success in Greece.
A sending-off also proved pivotal in Lisbon, Konstantinos Katsouranis seeing red for PAOK in the 69th minute.
Nicolas Gaitan put Benfica ahead a minute later, Rodrigo Lima adding a second from the spot in the 79th minute and Lazar Markovic adding another a minute after.
Valencia booked a tie with Ludogorets, a 0-0 draw at home to Dynamo Kiev sending them through 2-0 on aggregate.
Lyon won 1-0 at home to Chornomorets to set up a tie with Plzen.
With the tie level at 0-0 from the first leg, the Ligue 1 side were given a boost when their opponents had Evgeniy Zubeyko sent off after 76 minutes and took advantage with Alexandre Lacazette's goal four minutes later.
The final last 16 tie will be between AZ Alkmaar and Anzhi Makhachkala.
AZ, 1-0 up from the first leg against Liberec, went through after a 1-1 home draw, Nick Viergever's 19th-minute opener for the hosts cancelled out by Yevhen Budnik 18 minutes from time.
Anzhi, having been held 0-0 in the home leg, won 2-0 at Genk.
A Katuku Tshimanga own goal just after the hour and an Oleksandr Aliyev effort seven minutes later settled the match, with Rasim Tagirbekov's needless 81st-minute dismissal for the Russians not affecting the outcome.
UEFA Europa League last 16 draw
AZ Alkmaar (NED) v Anzhi Makhachkala (RUS)
Ludogorets Razgrad (BUL) v Valencia (ESP)
FC Porto (POR) v Napoli (ITA)
Lyon (FRA) v Viktoria Pilsen (CZE)
Sevilla (ESP) v Real Betis (ESP)
Tottenham Hotspur (ENG) v Benfica (POR)
FC Basel (SUI) v Salzburg (AUT)
Juventus (ITA) v Fiorentina (ITA)