(Porto win 3-2 on aggregate)
Francisco Costinha's last-minute equaliser sent Manchester United crashing out of the Champions League after goalkeeper Tim Howard's error.
Paul Scholes' crisp near post header after 31 minutes looked to have sent United through on away goals.
But Costinha pounced as Howard fumbled Benni McCarthy's free-kick to score and silence Old Trafford.
Porto had been on the back foot for much of a tense encounter, but struck late on to stun Sir Alex Ferguson.
Ferguson surprisingly left Cristiano Ronaldo on the bench, and preferred Eric Djemba-Djemba to Kleberson in midfield in place of the suspended Roy Keane.
The first 45 minutes was a war of attrition, with few clear chances and both sides placing the emphasis on caution.
Costinha unwittingly set up Ruud van Nistelrooy for United's first clear chance after 23 minutes.
He sent Van Nistelrooy clear with a wayward back-pass, but the striker's touch was poor and goalkeeper Vitor Baia plunged at his feet to save.
 |
KEY MOMENTS
31 mins: Paul Scholes puts Man Utd ahead
45 mins: Scholes has a goal wrongly ruled out for offside
46 mins: Louis Saha replaces the injured Eric Djemba-Djemba
90 mins: Francisco Costinha's equaliser sends Porto through
|
United took the lead after 31 minutes, with a trademark close range header from Scholes after a fine left-wing cross from John O'Shea.
It put United in the driving seat, but it needed a fine save from Howard seven minutes before the interval to stop Porto snatching a vital away goal.
Djemba-Djemba's careless defending gave Carlos Alberto a clear shooting chance, but Howard produced a vital block.
Scholes should have doubled United's advantage on the stroke of half-time, but his strike was ruled out by a linesman's flag, with television replays showing the decision was clearly incorrect.
Ferguson was forced into a reshuffle during the interval, as Djemba-Djemba suffered an injury and was replaced by Louis Saha.
Scholes was booked for a foul on Emanuel on the hour, a yellow card that would have ruled him out of the quarter-final had United progressed.
United were pushing forward for the second, and Ferguson's positive mood was reflected by his 74th minute substitution, which saw Ronaldo replace Darren Fletcher.
But the Portuguese teenager's appearance was brief, lasting only eight minutes before he was stretchered off injured.
And just as the game entered injury time, Howard failed to deal with a routine free-kick from McCarthy, leaving Costinha with a simple chance that ended United's dream of an eighth successive Champions League quarter-final.
Man Utd: Howard, Phil Neville, Gary Neville, Brown, O'Shea, Fletcher, Djemba-Djemba, Butt, Giggs, Scholes, van Nistelrooy. Subs: Carroll, Ronaldo, Saha, Bellion, Kleberson, Solskjaer, Forlan.
FC Porto: Vitor Baia, Paulo Ferreira, Jorge Costa, Ricardo Carvalho, Nuno Valente, Alenitchev, Costinha, Maniche, Deco, Carlos Alberto, McCarthy. Subs: Nuno, Pedro Emanuel, Ricardo Costa, Jankauskas, Bosingwa, Ricardo Fernandes, Bruno Moraes.
Referee: Valentin Ivanov (Russia)