Last Updated: Wednesday, 26 May, 2004, 20:51 GMT 21:51 UK
Champions League player ratings
Marks out of 10 for Porto and Monaco.
Vitor Baia: Rushed out in the opening minutes to deny Ludovic Giuly with a well-timed sliding tackle and showed plenty of bravery in the latter stages in coming out to gather the ball.
Paulo Ferreira: Enhanced his growing reputation, both defensively in keeping Jerome Rothen quiet and in attack with some surging runs. Provided the cross for Carlos Alberto's goal.
Jorge Costa: Used all his huge experience to marshall Porto's defence. Displayed great positional play to make up for his lack of pace.
Ricardo Carvalho: The Porto central defender, who has been tipped for a move to the Premiership, kept Fernando Morientes quiet. Very impressive on the ball as well as in the air.
Nuno Valente: Troubled occasionally by Hugo Ibarra and Eduoard Cisse in the first half, but had a much better game after the interval.
Francisco Costinha: Superb display from the Porto defensive midfielder, helping to break up Monaco's attacks and maintaining the Portuguese side's shape.
Maniche Ribeiro: Non-stop performance from the former Benfica midfielder, providing plenty of defensive cover for Carvalho and Costa.
Pedro Mendes: Worked tirelessly to subdue the dangerous Jerome Rothen with a typically industrious performance.
Deco Souza: Nothing was going right for the Porto playmaker as a succession of reverse passes and flicks went astray, but on 70 minutes he put that frustration behind him with a wonderful goal.
Silva: Derlei has only just returned to the Porto side after a lengthy absence through injury and the Brazilian never really adjusted to the pace of the match.
Carlos Alberto: With his pace and ball skills the young Brazilian made some dangerous runs and gave Porto the lead with a sublime finish.
Dmitri Alenitchev (replaced Carlos Alberto, 60 mins): The Russian set up Porto's second goal, cleverly pulling the ball back for Deco and then finished Monaco off with a powerful half-volley. His introduction by coach Jose Mourinho proved a turning point in the game.
Benni McCarthy (replaced, Derlei Silva 78 mins): The South African who scored twice against Manchester United earlier in the competition came on late with Porto well in control.
Pedro Emmanuel (replaced, Deco 84 mins): Introduced by Mourinho to provide extra defensive cover.
Flavio Roma: Looked nervous early on but grew in confidence, although the Monaco goalkeeper had no chance for Porto's three goals.
Hugo Ibarra: Superb going forward against his old club, Ibarra linked well throughout with Cisse on the right.
Julien Rodriguez: Along with central defensive Gael Givet, Rodriguez was slow to deal with Paulo Ferreira's cross that led to Carlos Alberto's goal.
Gael Givet: Might have done better for Porto's first goal and taken off after Deco's strike as Monaco coach Didier Deschamps looked to rescue the game.
Patrice Evra: The French young player of the year did his best on the left to compensate for Rothen's quiet performance. The youngster missed badly late on with the goal at his mercy.
Lucas Bernardi: Provided plenty of industry and tried to get forward to support Morientes as often as possible, but struggled to get to grips when Porto counterattacked.
Zikos: Kept Deco in check for long periods, but by concentrating on his defensive duties, left Monaco unbalanced going forward.
Edouard Cisse: Unrecognisable from his time at West Ham, Cisse provided an important outlet for Monaco on the right.
Jerome Rothen: His penetrating runs were one of the reasons why Monaco had reached the final, but it was almost as if Rothen had run out of steam by the time he reached Gelsenkirchen.
Ludovic Giuly: Almost scored in the third minute only to be denied by Baia's quick thinking and limped off injured in the 23rd minute. Monaco missed his speed and clever runs.
Fernando Morientes: Isolated in attack and denied service from the wings or central midfield, Morientes never really troubled the Porto defence.
Dado Prso (replaced Giuly, 23 mins): A similar type of player to Morientes, his partnership with the Spanish international never quite clicked.
Shabani Nonda (replaced Cisse, 64 mins): The youngster has missed a large part of the season through injury and was unable to turn the game in Monaco's favour.
Sebastien Squillaci (replaced Givet, 72 mins): Looked dangerous on a couple of occasions at set-pieces but the match was realy lost by the time he came on.