Having survived an early scare when a tackle by David May was of crucial importance, United grew in stature and ultimately maintained the four- goal first-leg advantage with ease. They now move confidently into a European Cup semi-final against Borussia Dortmund, who last night dispensed with the challenge of Auxerre.
For the first leg, the venue of which will be decided tomorrow, Dortmund will be without their influential captain, Matthias Sammer, who was booked for the second time in the competition. With Juventus and Ajax also making the last four, it will be a semi-final round of real quality.
It is the first time United have reached this stage of Europe's most prestigious and lucrative club competition since 1969 when they lost, on away goals, to Milan. It is also the first time any English side have reached the competition's last four since Liverpool in 1985.
May was United's outstanding player last night, but there were also fine performances from Peter Schmeichel, Gary Neville, Gary Pallister and Roy Keane. Almost as important as the clean sheet in goals was United's clean sheet in bookings. All the squad, barring injury, will be available for the semi-final.
The only blot on United's night was a number of injuries to supporters. Twenty were hurt outside the ground due to problems caused by congestion, some of which involved ticket-less fans. A few more were hurt during surges on the terrace after the match as fans waited to be let out.
On the pitch, Rui Jorge's second-minute cross from the left eluded Pallister and Jardel brought a fine save from Schmeichel with a flying header. Two minutes later the goalkeeper should have been beaten. Ljubinko Drulovic's pass to Edmilson beat the offside trap and the Brazilian advanced on Schmeichel. A goal seemed certain, but Edmilson delayed his pass long enough for May to get back and block Jardel's shot.
These scares seemed to unsettle United, who gave the ball away too often. With both David Beckham and Nicky Butt naturally drawn to the centre, Porto found space on the flanks. Butt was one of two United changes from the first leg: both he and Keane returned from injury, allowing Ryan Giggs and Andy Cole to rest their hamstring and thigh strains. Porto had made six changes, three of them enforced through suspension. Henrique Hilario, the goalkeeper who had been so inept at Old Trafford, was among those dropped and was not even a substitute.
For 20 minutes it did not matter who was in the Porto goal as United did not even reach the area. Then Beckham was fouled 35 yards out. It seemed too far to shoot but the England midfielder struck the bar with a wickedly curving shot. United now came into the game with Ole Gunnar Solksjaer twice going close. Porto continued to threaten but Jardel wasted yet another chance, shooting well wide from 10 yards. Their profligacy was underlined by the half-time statistic of one shot on target from 11.
Things improved after the break, but only slightly, with Edmilson heading over from a good position before finally forcing Schmeichel into a save. Gary Neville and May both made a brace of excellent interventions, then Jardel finally managed a shot on target - an overhead kick no less - but Schmeichel was perfectly positioned to save.
It could have been even worse for Porto, but Eric Cantona miskicked in front of goal with 10 minutes left. Even so, their night was summed up when Edmilson rose to a cross only to head well over. As he fell to the ground in frustration the supporters, now leaving in their thousands, paused to gesture their contempt. Five minutes later, those that remained stood to applaud as United's players departed, weary but unbowed and heading for the semi-finals.
Porto (4-3-3): Wozniak; Joao Pinto (Zahovic, 37), Jorge Costa, Joao Manuel Pinto, Fernando Mendes (Mielcarski, 51); Paulinho Santos, Barroso (Wetl, 48), Rui Jorge; Edmilson, Jardel, Drulovic. Substitutes not used: Eriksson (gk), Lula.
Manchester United (4-4-2): Schmeichel; G Neville, May, Pallister, Irwin (P Neville, 80); Beckham (Poborsky, 80), Keane, Johnsen, Butt; Cantona, Solskjaer (Scholes, 70). Substitutes not used: Van der Gouw (gk), McClair.
Referee: K Nielsen (Denmark).
Results, page 27