Portugal failed in their attempt to beat Brazil and climb above the World Cup heavyweights in a toothless Group G match in Durban.
Brazil clinched top spot while the Portuguese got the point they needed to finish second in the standings to also progress to the last 16 ahead of the Ivory Coast, who defeated North Korea.
The Brazilians will play the runners-up of Group H in their next game while Portugal will take on the winners from that pool.
Much was expected from the match at a packed Moses Mabhida stadium with both sides possessing plenty of flair and despite an electric atmosphere with the Brazilian fans far outnumbering the Portuguese supporters, there was little action on the pitch.
Brazil had the best chance to claim their third win in as many games on the half-hour mark but Portugal goalkeeper Eduardo made an outstanding save to deny Nilmar from close range.
Portugal should have gone in front before the hour mark, but Raul Meireles struck just wide from five yards after a great run from Cristiano Ronaldo.
A game expected to be full of attacking football instead had seven yellow cards handed out in a first half controlled by Brazil.
Portugal came to life after the re-start but failed to test Brazil goalkeeper Julio Cesar.
Portugal coach Carlos Queiroz made four changes to the side that thrashed North Korea 7-0, while the Brazilians were without suspended Kaka and injured Elano in midfield.
As expected, Julio Baptista replaced Kaka while coach Dunga surprisingly left Robinho out of the starting XI and opted to play Nilmar alongside Luis Fabiano up front.
Brazil earned two corners in the opening minutes and had the first chance in the fifth minute.
Dani Alves' right-footed strike from 25 yards went wide of the near post.
Brazil tried to loosen up the Portuguese defence but they did not seem to have any sense of urgency to test Eduardo.
In the 14th minute, Julio Cesar did well to punch away Fabio Coentrao's dangerous cross towards the box.
Shortly after, Alves tried his luck from the distance and his central effort was saved by the Portugal goalkeeper.
At the other end, Tiago's volley from the edge of the area went over the bar.
Midway through the first half, Juan was shown a yellow card after a hand ball to stop a Portuguese counter-attack.
Brazil almost went in front soon after.
Luis Fabiano fed Nilmar at the far post and his five-yard shot was deflected by Eduardo's palm to the near post.
At the other end, Tiago was booked for diving.
In the 38th minute, Luis Fabiano latched on to Maicon's cross from the right and his header went just wide of the near post.
Brazil goalkeeper Julio Cesar had one save to make in the opening half with Ronaldo's 40th-minute strike not causing the Inter Milan man any problems.
Portugal came to life in the second half and Lucio was forced to make a crucial clearance from Ronaldo's cross with Danny waiting inside the area.
Before the hour mark, Meireles struck just wide from five yards after a great run from Ronaldo.
In the 73rd minute, Alves' 30-yard strike went wide while three minutes from time Lucio's header was saved by Eduardo.
Substitute Ramires almost earned Brazil victory but his right-footed strike was denied by an acrobatic save from Eduardo in stoppage time.
Years | Winners | Runner-up | Third place |
2006 | Italy | France | Germany |
2002 | Brazil | Germany | Turkey |
1998 | France | Brazil | Croatia |
1994 | Brazil | Italy | Sweden |
1990 | Germany | Argentina | Italy |
1986 | Argentina | Germany | France |
1982 | Italy | Germany | Poland |
1978 | Argentina | Holland | Brazil |
1974 | Germany | Holland | Poland |
1970 | Brazil | Italy | Germany |
1966 | England | Germany | Portugal |
1962 | Brazil | Czech | Chile |
1958 | Brazil | Sweden | France |
1954 | Germany | Hungary | Austria |
1950 | Uruguay | Brazil | Sweden |
1938 | Italy | Hungary | Brazil |
1934 | Italy | Czech | Germany |
1930 | Uruguay | Argentina | America |