Bayern Munich forward Luca Toni opened the scoring in first-half injury-time and AC Milan midfielder Andrea Pirlo doubled the advantage six minutes after the break with a bobbling shot from distance.
Ricardo Quaresma pulled a goal back with less than a quarter of an hour to play but two minutes later Udinese forward Fabio Quagliarella sealed the victory.
Although there was nothing resting on this result, pride was at stake for two of the favourites for the UEFA EURO 2008 title in June in Austria and Switzerland.
And while Italy's attacking play was at times sumptuous, they were greatly helped by shambolic defending from the nominal visitors.
They had already had a Pirlo strike disallowed for a non-existant handball by the Milan player on four minutes, while Udinese's Antonio Di Natale missed the ball completely on 13 minutes with the goal at his mercy from a right-wing cross by Juventus's Raffaele Palladino.
Palladino set Di Natale up again but Real Betis goalkeeper Ricardo parried his snap shot and up the other end Portugal striker Ariza Makukula fired just wide from the edge of the box.
Quaresma overhit his pass to Ronaldo, pushing the Manchester United star too far wide and allowing the desperate Italy defenders to regroup and clear.
Portugal out of sorts
Portugal were made to pay dearly within a minute when substitute full-back Fabio Grosso crossed from the left and both Ricardo and Chelsea's Ricardo Carvalho failed to cut out the ball, allowing Toni to prod home at the back post.
Just after the re-start Toni was twice denied in quick succession by Ricardo and Jose Bosingwa but from the resulting corner Pirlo took a swing from outside the box with a slight deflection coming off team-mate Fabio Cannavaro and causing the ball to bobble up and beat the unsighted Ricardo.
Italy started to dominate and Ricardo tipped a Palladino volley onto the bar as the world champions threatened to run riot.
Portugal finally started to look dangerous in the latter stages and Quaresma crashed home a low cross from the left by Manchester United winger Nani with 14 minutes to play.
But almost immediately Portugal's defence went missing at the other end and Quagliarella turned home a headed flick-on from Roma's Simone Perrotta.