Nine-man Roma missed out on the Champions League group stage after a 3-0 home defeat to Porto saw them lose their play-off tie 4-1 on aggregate.
Daniele De Rossi and Emerson Palmieri both received straight red cards for dangerous challenges as Felipe, Miguel Layun and Jesus Corona sealed Porto’s victory.
The Portuguese side took the lead at the Stadio Olimpico with just eight minutes played, as Felipe headed in from Otavio’s devilish cross.
Roma, who needed just one goal to level the tie overall, gave themselves a mountain to climb when De Rossi was dismissed for a needless high challenge that caught Maxi Pereira on the shin.
Substitute Emerson fared little better, earning a sending-off for an awful lunge on Corona with just five minutes of the second half played.
Roma looked the more threatening as Porto began to sit off, but they struck a crucial second away goal when Layun raced onto Hector Herrera’s pass and slotted home after beating goalkeeper Wojciech Szczesny, who had raced out of his penalty area, to win the ball.
And Porto made the win safe two minutes later, as Corona finished a fine run into the box with a high finish at Szczesny’s near post.
Monaco will join Porto in the group stage after their 1-0 win over Villarreal secured a 3-1 aggregate victory.
The visitors controlled possession at Stade Louis II but were unable to fashion enough clear-cut chances for Alexandre Pato in attack, and Fabinho made Monaco’s win safe with a penalty in second-half stoppage time after Mateo Musacchio’s hand ball.
Celtic also progress, their 2-0 away defeat to Hapoel Be’er Sheva not enough to deny them a 5-4 aggregate win, although a Craig Gordon penalty save from Mahadan Radi in the first half proved crucial.
Legia Warsaw’s 1-1 draw with Dundalk secured a 3-1 triumph overall, while Ludogorets will join them in Thursday’s group-stage draw after Claudiu Keseru’s 95th-minute equaliser sealed a 2-2 draw away to Vitktoria Plzen, and a 4-2 aggregate win.