Defending champions Germany came from behind to beat Australia 4-2 and reach the Olympic men's hockey final.
Australia were twice in the lead, but Germany countered with a devastating spell of three goals in nine minutes.
Germany will face either Netherlands or Great Britain, who meet on Thursday night, in Saturday's final.
Australia came into the match as favourites after scoring 23 goals and conceding only five in their five group games.
Kieran Govers put Australia in front after 22 minutes with a classy finish, only for Germany to equalise soon afterwards as Moritz Fuerste hammered in from a penalty corner.
Glenn Turner lashed in from close range to put Australia 2-1 ahead early in the second half.
But Germany seized control of the game with three goals in nine minutes from Matthias Witthaus, Timo Wess and Florian Fuchs to storm into the final.
After folding under a late German barrage, Australia will have to content themselves with a play-off for bronze against the losers of the second semi-final.