Atletico Madrid will not contest European football in the second half of a season for the first time since 2010-11 after a 2-1 defeat to Porto saw them finish bottom of Champions League Group B.

Diego Simeone's men would have secured a spot in the Europa League with a third-place finish, but an underwhelming display at the Dragao on Tuesday ensured Bayer Leverkusen – who drew 0-0 with Club Brugge – took that spot.

Porto needed only five minutes to take control as Mehdi Taremi got a poacher's goal, and that was followed before the half-hour mark by an emphatic Stephen Eustaquio strike.

Atletico livened up towards the end, seeing an Antoine Griezmann strike contentiously wiped out and Ivan Marcano put into his own net, but that came too late to make a difference.

The hosts meant business right from the start and raced into a 1-0 lead. Pepe's reverse pass into the right side of the box released Evanilson, and his scuffed shot found Taremi for a tap-in.

Galeno then wasted a gilt-edged opportunity but made up for his wastefulness in the 24th minute, beating Stefan Savic to the ball out wide before cutting it back for Eustaquio to blast into the bottom-left corner.

Chances were rare after the break until Atletico thought they pulled one back when Griezmann found the top-right corner with 22 minutes left.

But referee Daniele Orsato controversially disallowed it for an apparent foul by Rodrigo De Paul in the build-up and there was no VAR reprieve.

Atletico did eventually net in stoppage time as Marcano diverted Yannick Carrasco's corner past his own goalkeeper, but it was scarcely even a consolation for Simeone's team.