Portugal named the side that started the semi-final against Holland, while Greece drafted in Stylianos Giannakopoulos for the suspended Giorgios Karagounis in midfield.
The opening minutes in the Estadio da Luz saw little in the way of goalmouth incidents, with the hosts making the brighter start against the defensive set-up of the Greeks.
Twelve minutes in Costinha hacked down Giorgios Seitaridis on the Greek right and was booked, but it was Portugal who had the first effort on target shortly afterwards.
Miguel powered forward down the right and forced an excellent full-stretch save from Antonis Nikopolidis going to his right.
After 16 minutes a fluent Greek attack ended with Ricardo rescuing his side by coming out quickly to deny Charisteas a clear chance.
Just past the midway point of the first half a half-cleared corner broke to Maniche 25 yards out and his right-foot shot flashed just wide of the far post.
Deco almost played in Pauleta just past the half-hour mark, before Greece began to find their rhythm.
Three minutes before half-time, Jorge Andrade came to Portugal's rescue as he headed away Zisis Vryzas' cross with two Greeks unmarked behind him, before Paulo Ferreira replaced the injured Miguel.
After the restart, Portugal started the better, but were still unable to prise open the well-organised Greek defence and just before the hour the underdogs broke the deadlock.
Their first corner of the game was swung in from the right by Giannakopoulos and Charisteas arrived to head home from six yards out.
Soon after Ricardo just got to Giannakopoulos' header back across goal from Vryzas' deep cross, with Konstantinos Katsouranis waiting to pounce.
Ronaldo forced a smart save from Nikopolidis with a shot from distance, before Portugal brought on Rui Costa.
Twenty-five minutes from time Ricardo Carvalho made a last-ditch challenge to prevent a second goal from Charisteas, with Portugal caught short at the back.
Portugal then piled on the pressure with a series of corners, before making a final substitution by introducing Nuno Gomes 16 minutes from time.
A minute later Ronaldo was played in by Maniche's long ball, but he was unable to keep his shot down and blasted the chance high into the crowd.
Nikopolidis gathered crosses from Luis Figo and Nuno Valente as Portugal piled on the pressure and then made a solid stop from Carvalho's drive eight minutes from time.
The closing minutes saw some desperate Portuguese attacks flounder on the rock of the Greek defence, as German Otto Rehhagel completed his amazing run with the tournament outsiders, who were deservedly crowned as Kings of Europe.