Juventus finished as winners of Champions League Group H thanks to a 2-0 win over Dinamo Zagreb, who became just the third team to fail to score during the group stage.
Gonzalo Higuain scored the opener in the 52nd minute and Daniele Rugani headed in the second 17 minutes from time.
It will be Sevilla who join Juve in the last 16 after holding Lyon to a goalless draw in France.
Lyon needed to win the game by two clear goals to deny the Spaniards but were unable to find the breakthrough despite a host of chances.
Porto qualified from Group G with a thumping 5-0 victory over pool winners Leicester.
It was a chastening way for the Foxes to suffer their first Champions League defeat, with Andre Silva giving the hosts the lead in only the sixth minute.
Porto were three up at half-time through Jesus Corona and Yacine Brahimi and Silva added his second from the penalty spot before Diogo Jota completed the scoring.
Copenhagen were relying on a Porto slip-up to go through but they at least finished their campaign with a win, with early goals from Brandon Mechele into his own net and Mathias Jorgensen earning them a 2-0 victory against pointless Club Brugge.
In Group E, Tottenham salvaged something from their campaign by beating CSKA Moscow 3-1 to qualify for the Europa League.
Alan Dzagoev put CSKA ahead in the 33rd minute but Dele Alli equalised five minutes later and Harry Kane put Spurs ahead in first-half injury time.
The game was settled in the 77th minute when Alli's header went in off goalkeeper Igor Akinfeev.
Monaco were already guaranteed to win the group ahead of Bayer Leverkusen but the Germans secured their first ever win over the Ligue 1 side to finish in style.
Vladlen Yurchenko had been out injured since April but marked his return in spectacular fashion with a long-range opener and Julian Brandt added a second three minutes after the break.
The 3-0 win was completed eight minutes from time. Technically it was a fifth consecutive missed penalty for the Germans, with Wendell hitting the underside of the bar and the ball then striking goalkeeper Morgan De Sanctis and rolling in.
Borussia Dortmund came from two goals down to secure a 2-2 draw with Real Madrid and win Group F.
The Germans went into the clash at the Bernabeu two points ahead of their rivals but two goals from Karim Benzema looked set to clinch top spot for Real.
However, Pierre-Emerick Aubameyang pulled one back in the 61st minute and Marco Reus netted the equaliser two minutes from time.
Legia Warsaw, beaten 8-4 by Dortmund last time out, leapfrogged Sporting Lisbon to qualify for the Europa League thanks to a 1-0 win, Guilherme scoring the goal on the half-hour mark.