Paul Scholes' spectacular strike sent Manchester United into their first Champions League final for nine years on a night of Old Trafford tension.
Scholes rifled in a spectacular 25-yard effort after 14 minutes to beat Barcelona and set up an all-English clash with Chelsea or Liverpool.
Barcelona dominated possession for long periods, with Deco twice close and Thierry Henry wasting a late chance.
But United mounted a rearguard action to seal a date in Moscow on 21 May.
There was added poignancy and significance in the victory, coming 50 years after the Munich air crash.
And for Scholes, suspended for the 1999 final victory against Bayern Munich in Barcelona, it is a chance to make up for that bitter disappointment.
United were dealt a double blow before kick-off when Wayne Rooney's hip injury ruled him out and Nemanja Vidic was sidelined by the concussion he sustained at Chelsea.
And United almost made a nightmare start when Scholes tripped Lionel Messi as he raced into the area - there was only inches in it and fortunately for the home side German referee Herbert Fandel got the big call right and gave a free-kick.
It took United time to settle, but Scholes eased their nerves with a thunderous strike to give them the lead in the 14th minute.
Gianluca Zambrotta's wayward clearance landed at Scholes' feet, and he delivered a trademark rising drive from 25 yards that flew high into the net beyond the outstretched hands of Barcelona keeper Victor Valdes.
It was only the second goal Scholes has scored this season - but it was a fitting strike to send United to the final.
Messi was the real danger man for Barcelona, and he ended a slalom run with a left-foot shot that was turned away by United keeper Edwin van der Sar.