Boavista 0-1 Celtic (agg: 1-2)
Henrik Larsson made amends for his penalty miss in the first leg by scoring the goal that put Celtic into the Uefa Cup final.
Celtic just about deserved their victory against a Boavista side that failed to excite, although the Scottish champions played well below their best.
Larsson's 78th-minute strike was the one bright point in a highly disappointing and dour match.
But the performance will be forgotten as the Celtic supporters prepare for the trip to Seville, where their team will play Porto in the final on 21 May.
With so much at stake, the opening exchanges were tentative, but Celtic settled first and created the game's first decent goalscoring opportunity.
A hopeful Alan Thompson free-kick was flicked on by the head of John Hartson, allowing Larsson a sight of goal, but the Swede uncharacteristically pulled his shot wide under pressure from Eder Silveira.
Boavista scarcely threatened the Celtic goal in the opening quarter of the game and when they did manage a shot at goal on 21 minutes, Luis Pedrosa's long-range free-kick was well off target.
Three minutes later, Pedrosa attempted a similar effort, but again the shot flew over Rab Douglas' bar.
Celtic were forced to bring Chris Sutton into the fray rather earlier than planned when Paul Lambert was forced off with an ankle injury with just over half an hour gone.
The home side's first significant effort came after 36 minutes when Pedro Santos let fly from outside the box, but the ball was always curling wide of Douglas' left-hand post.
Douglas came to Celtic's rescue two minutes before the interval when he reacted quickly to palm Elpidio Silva's header away after Martelinho had capitalised on Joos Valgaeren's slip to get behind the Celtic defence.
But Douglas almost handed the Portuguese the lead on 59 minutes when he misjudged Duda's cross and succeeded only in knocking the ball into Silva's path.
The Brazilian got his header on target but Johan Mjallby managed to deflect the ball wide of the post with Douglas stranded.
Celtic struggled to get going in the second half until Alan Thompson had a fierce drive deflected wide on 70 minutes as they sought that elusive away goal.
It finally came eight minutes later, when Larsson played a slightly fortunate one-two with Boavista defender Filipe Anunciacao before finishing clinically from 12 yards.
Didier Agathe might have conceded a penalty with four minutes remaining when he appeared to catch Jocivalter in the area, but the referee saw nothing amiss and Celtic held on for a famous win.
Boavista: Ricardo, Mario Loja, Avalos, Eder,
Erivan (Jocivalter 80), Anunciacao, Martelinho,
Pedrosa (Yuri 84), Pedro Santos, Silva (Luiz Claudio 68), Duda.
Subs Not Used: William, Rui Oscar, Bosingwa, Goulart.
Celtic: Douglas, Valgaeren (Smith 75), Balde, Mjallby, Agathe,
Lennon, Petrov, Lambert (Sutton 34), Thompson, Larsson, Hartson.
Subs Not Used: Marshall, Sylla, McNamara, Laursen, Maloney.
Booked: Agathe, Mjallby.
Ref: Valentin Ivanov (Russia).