Portugal dominated the game but struggled to create chances in the early going on a wet pitch. However, Nani made no mistake in the 29th minute when he was picked out by former Manchester United team-mate Ronaldo and slotted home from 15 yards.
Denmark were still reeling from that when Nani doubled the lead two minutes later, this time with a superb solo effort as he picked up the ball in midfield and hammered it into the top corner of the net with his left foot.
Things got worse for the visitors as goalkeeper Thomas Sorensen left with an injury, and Portugal began to bring out the party tricks, a sweet move led by Joao Moutinho setting up a chance that Carlos Martins could not finish. Substitute goalkeeper Anders Lindegaard made a fine save to deny Ronaldo when he turned to shoot from 20 yards.
The Real Madrid star went close again in the second half with a thunderbolt which crashed back off the crossbar. Lindegaard then had to be on his toes to cut out a through-ball to Ronaldo from Martins. However, the goalkeeper would have been culpable for spilling Ronaldo's free-kick had Martins done better with the rebound.
Ronaldo was getting close, but Lindegaard made another fine save to keep out his 25-yarder. Denmark had offered little going forward but were gifted a way back when Real Madrid defender Carvalho turned a cross into his own net.