Barcelona reached the Champions League final for the first time in 12 years on Wednesday after a goalless home draw with six-times winners AC Milan sent them through deservedly 1-0 on aggregate.
Leading 1-0 courtesy of Ludovic Giuly's goal in the San Siro, Ronaldinho-inspired Barcelona squandered chances in each half but it did not matter as they advanced to a May 17 Paris final against Arsenal, who also went through 1-0 on aggregate after a goalless draw at Villarreal on Tuesday.
Barca's last final appearance was the 4-0 defeat by Milan in 1994, two years after they had beaten Sampdoria for their solitary success in Europe's top competition.
Milan rarely threatened on Wednesday but were furious when a 69th-minute Andriy Shevchenko headed goal was ruled out, seemingly for a push after an innocuous contact with Carles Puyol.
"It was absolutely legal. He jumped and hardly touched Puyol," fumed coach Carlo Ancelotti afterwards.
Frank Rijkaard's side were welcomed on to the Nou Camp with a stunning red and blue mosaic hoisted aloft by the 90,000 noisy fans who had crammed into the stadium.
Samuel Eto'o almost put the Catalans ahead in the third minute when he darted into the area but Milan keeper Dida spread himself well to block the Cameroon striker's low shot.
Barca soon took control of possession and with talented youngster Andres Iniesta marshalling the midfield, Milan struggled to get out of their own half.
The electric Eto'o manufactured another great chance when he ballooned a shot off Dida but centre-back Alessandro Costacurta, in the starting lineup two days after celebrating his 40th birthday, managed to hook the looping ball clear from in front of the empty goal.
Although they had to live off scraps of possession, the Milan forwards looked razor sharp on the break and Shevchenko slammed the ball into the side-netting after Andrea Pirlo had curled a fine pass behind the Barca defence.
It was Barca, however, who continued to make the running, Iniesta almost prising open the Milan defence with a scorching run down the middle and Juliano Belletti going close with a low angled shot
Belletti had a better chance early in the second half when, with the goal at his mercy after Ronaldinho and Giuly had sliced open the Milan defence, he failed to make contact.
The home fans were growing more confident by the minute but were silenced 20 minutes from the end when Shevchenko headed home.
However, the referee had already blown for a foul on Puyol, even though TV replays appeared to show that the defender merely slipped - sparking furious protests from the Milan players and bench.
Substitute Henrik Larsson was denied a 75th-minute goal when Dida scrambled the Swede's close-range diving header off the line, but the miss mattered little to the fans who exploded with relief when the final whistle went 15 minutes later.
Ancelotti said of Shevchenko's effort: "It was a goal, he (Puyol) lost his balance. With a referee of this level you can't have mistake like that. We feel penalised.
"We gave our all, it was an excellent game against a very strong side. We were on equal terms in both games.
"As in the first leg we looked for the win, we created some things and of course gave them some opportunities as well. The team did everything that I wanted from and that they could do. The only regret is that we weren't able to get the goal we deserved."