Raul Meireles scored twice to lead Portugal to a 3-1 victory Tuesday against Cameroon, which played most of the match with 10 men after star striker Samuel Eto'o got ejected.
In other World Cup tuneups, the Netherlands outplayed Ghana 4-1 and slumping Switzerland lost 1-0 at home to non-qualifier Costa Rica.
In Covilha, Portugal, Eto'o was sent off in the first half after collecting his second yellow card, a minute after Meireles scored his first goal.
Pierre Webo replied for Cameroon in the 69th minute to make it 2-1, but Nani added a third for the home side in the 81st.
Portugal is in perhaps the toughest World Cup group, facing five-time champion Brazil, Ivory Coast and North Korea in Group G. Cameroon faces Japan, Denmark and the Netherlands.
The Dutch, two-time World Cup runners-up, showed off their attacking prowess against another qualifier in Rotterdam.
Winston Parks ran past three Swiss defenders to score Costa Rica's winner in Sion. The Swiss have lost all three friendlies since qualifying for the World Cup in October.
"It was important for morale to win the match. With a little bit of luck we would have equalized," said Switzerland's German coach Ottmar Hitzfeld, who has one more scheduled warmup against defending World Cup champion Italy in Geneva on Saturday.
In a meeting of two more World Cup teams, Josh Kennedy scored the only goal in the 71st minute as Australia beat Denmark 1-0 at Ruimsig Stadium — just outside Johannesburg — where more than 2,000 fans turned out for a first taste of international soccer ahead of the tournament.
The Australians face Germany, Ghana and Serbia in one of the toughest groups.
The next warmup games are on Wednesday when Brazil travels to Zimbabwe to face the national side in Harare.
Greece and Paraguay meet at Winterthur, Switzerland, and Serbia takes on non-qualifier Poland at Kufstein, Austria. Honduras is also in Austria to get the sort of high altitude training they will face in South Africa and meets Azerbaijan at Zell am See.