Vincent Aboubakar scored twice as Porto eased into the Champions League last 16 by thrashing Monaco 5-2 in a game that saw both sides reduced to 10 men.
Sergio Conceicao's men needed a win to guarantee second spot in Group G ahead of RB Leipzig and a place in the first knockout round - where they fell at the hands of Juventus a year ago - and they might light work of a poor Monaco side at Estadio do Dragao.
Aboubakar took advantage of the Ligue 1 champions' pedestrian defending to score twice inside the opening 33 minutes before Felipe and Rachid Ghezzal were sent off following a clash in the centre circle.
Yacine Brahimi extended Porto's lead before half time and when Kamil Glik pulled one back for Leonardo Jardim's beleaguered troops with a penalty just after the hour mark, Porto ruthlessly powered forward to restore their three-goal cushion through Alex Telles.
Second-half substitute Radamel Falcao then scored against his former club but there was to be no Monaco fightback as Tiquinho Soares wrapped up a result that leaves Monaco out of the competition with four defeats and two draws from six games, ending a miserable campaign from last season's semi-finalists.
Porto, meanwhile, will hope for a favourable draw as they aim to go one better than 2016-17 and reach the quarter-finals.
Final de Jogo / End of the match / Final del Partido
9' [1-0] Aboubakar
33' [2-0] Aboubakar
45' [3-0] Brahimi
61' [3-1] Glik
65' [4-1] Alex Telles
78' [4-2] Falcao
88' [5-2] Soares #FCPorto #FCPASM #UCL pic.twitter.com/ogrIO54e4n — FC Porto (@FCPorto) December 6, 2017
The hosts took a ninth-minute lead when Ricardo Pereira won a free-kick down the Porto right and the set-piece led to Brahimi lifting the ball over Monaco's defence to the feet of the unmarked Aboubakar, who poked it past Diego Benaglio.
Monaco defender Glik lobbed an audacious effort narrowly over the crossbar from just over the halfway line at the other end, but the visitors lacked the urgency going forward that made Porto look dangerous with each attack.
Danilo Pereira strode out of defensive midfield and sent in a curling shot from outside the box that drew a diving save from Benaglio, who turned the ball around the post.
Monaco were leaving gaps in defence and they did so again after 33 minutes, when Danilo Pereira's pass found Aboubakar on the left side of the penalty area and the Cameroon international cut inside before blasting his effort beyond Benaglio with his right foot.
After 38 minutes, Felipe scythed down Ghezzal, who responded to the challenge by pushing his opponent in the face, prompting a retaliation from the Porto defender that meant both men were shown red cards by referee Jonas Eriksson.
Then, on the cusp of half time, Brahimi latched onto Hector Herrera's chip and slid in his finish to put the hosts in cruise control at the break.
Porto camped themselves in Monaco's half after the break and Moussa Marega fired a deflected shot over the crossbar from 10 yards.
When Monaco relieved the pressure they were awarded a penalty for an alleged handball against Ivan Marcano and Glik drilled the spot-kick low into the bottom-left corner.
The reprise was shortlived as Porto took just four minutes to restore their three-goal advantage through Telles, who picked up the ball 10 yards outside the box and rattled a bouncing left-footed shot onto the inside of the right-hand post.
Monaco sent on Falcao for the last 25 minutes and he found the net in the 77th minute when he headed home Keita Balde's cross at the near post, but it was too little too late for Jardim's men, who had salt rubbed in their wounds when Soares rose to head in Ricardo Pereira's cross with two minutes left to play.