A spectacular strike by Paul Scholes 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.
Ferguson praised Scholes for his first-half strike
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.
606: DEBATE
I have no nails left and my heart nearly stopped a few times but wee finally made it!!!!
Unitedfan1987
United had chances of their own, with Ji-Sung Park side-footing just wide, but Barcelona regained their composure to enjoy a period of superiority, with Deco twice narrowly off target.
Nani, preferred to Ryan Giggs, wasted a chance to grab the priceless second goal three minutes before the interval when he glanced Park's cross wide from eight yards.
Barcelona began the second half with a spell of possession, but it was United who carved out a clear opportunity as Valdes blocked Tevez's close-range drive after 56 minutes.
The Catalans made a change on the hour, sending on former Arsenal striker Thierry Henry for Andres Iniesta.
Rijkaard was critical of the English side's style of play
Barcelona, inspired by the brilliant Messi, had United penned back, but they were resisted by defensive discipline and resilience of the highest class from a side normally noted for their attacking verve.
United attempted to stem the tide with 13 minutes left by making a double change, with Ryan Giggs and Darren Fletcher replacing Nani and Scholes.
Henry almost returned to haunt United with a point-blank header from Xavi's corner which was gratefully clutched by Van der Sar.
Barcelona weaved pretty patterns in the closing stages, but United's defence - superbly marshalled by Rio Ferdinand and Wes Brown - stood firm to spark wild scenes of celebration at the final whistle.
Man Utd: Van der Sar, Hargreaves, Ferdinand, Brown, Evra (Silvestre 90), Park, Scholes (Fletcher 76), Carrick, Nani (Giggs 76), Ronaldo, Tevez.
Subs Not Used: Kuszczak, Anderson, O'Shea, Welbeck.
Booked: Carrick, Ronaldo.
Goals: Scholes 14.
Barcelona: Valdes, Zambrotta, Puyol, Milito, Abidal, Toure Yaya (Gudjohnsen 88), Messi, Xavi, Deco, Iniesta (Henry 60), Eto'o (Bojan 72).
Subs Not Used: Pinto, Edmilson, Sylvinho, Thuram.
Booked: Zambrotta, Deco, Toure Yaya.
Att: 75,061
Ref: Herbert Fandel (Germany).
BBC Sport Player Rater man of the match: Barcelona's Lionel Messi 7.98 (on 90 minutes).