"It's going to be difficult for us now," said Manchester United manager Sir Alex Ferguson. "It will be a difficult game in Porto, that goes without saying."
Porto rattled the shaky United defense with early and late goals to earn the tie.
After taking a pass from Wayne Rooney, sub Carlos Tevez had scored in the 85th minute with a shot to the near post to appear to rescue United, but Mariano beat Edwin van der Sar four minutes later to even the score at 2-2.
The Premier League leaders looked to have snatched an undeserved win thanks to substitute Carlos Tevez's 85th minute goal.
But Porto, who had taken the lead in the fourth minute through Cristian Rodriguez before Wayne Rooney was gifted an equalizer before halftime, struck for a second time in the 89th minute when substitute Mariano beat goalie Edwin van der Sar to put them firmly in the driving seat.
United gifted Cristian Rodriguez a goal early in the first half, Bruno Alves returned the favor, hitting a backpass to Rooney, who strolled in and scored the equalizer.
"Porto played exactly as I thought they would," added Ferguson. "The score is about right. They were the better side in the first half but we improved our game in the second half and had a lot of possession."
April 7 in Manchester
Manchester United 2 Porto 2. Goals: Rooney 15, Tevez 85; Rodriguez 4, Mariano 89.
Manchester United -- van der Sar, O'Shea, Evans (Neville 72), Vidic, Evra, Fletcher, Carrick, Scholes (Tevez 72), Cristiano Ronaldo, Rooney, Park Ji-sung (Giggs 59).
Porto -- Helton, Sapunaru, Bruno Alves, Rolando, Cissokho, Lucho Gonzalez, Fernando, Raul Meireles (Tomas Costa 79; Andres Madrid 90+4), Lopez, Hulk, Rodriguez (Mariano 80).
Referee: Konrad Plautz (Austria)