Olympic champions Australia failed to qualify for the women's hockey semi-final after defeat to the Netherlands. The Dutch topped group B after Mijntje Donners' only goal in the 47th minute.
They will now play world champions Argentina who were beaten into second in their group after a 3-2 surprise defeat to China.
The result put the Chinese top of group A and they will now play Germany, who finished two points ahead of Australia after a 3-2 victory over South Korea.
Australian captain Katrina Powell was inconsolable after missing four scoring chances in her 250th international match.
"It's the end of a dream," said Powell, who was part of the winning side at both Atlanta and Sydney.
"I am not used to missing out on an Olympic semi-final. It will take time to sink in."
The Dutch, bronze medallists at Sydney, and the fast-improving Chinese were the only teams in the 10-nation event to win all their preliminary matches.
China led Argentina 2-0 through goals by Ma Yibo and Fu Baorong before the World Cup champions drew level before the interval, Luciana Aymer scoring both times.
Tang Chunling hit the winner in the 47th minute, leaving Argentina with their first defeat in the competition.
"It does not matter we lost," Aymer said. "What counts is that we are in the semi-finals."
Germany, who were staring down the barrel before Sunday with just one win from three games, played aggressively to oust the fancied Koreans.
The Germans took a 2-0 lead by the 30th minute and scored another goal in the second half to make it 3-1.
South Korea, silver-medallists in 1988 and 1996, earned a last-minute goal through captain Kim Seong-Eun, but it was not enough to keep them in contention for the semi-finals.
Disgusted with his team's performance, South Korean coach Kim Sang-Ryul announced his resignation.