Stefanos Tsitsipas shocked six-time champion Roger Federer 6-3, 6-4 to reach the final of the ATP Finals in his tournament debut on Saturday.
The Greek sixth seed, 17 years younger than his 38-year-old opponent, beat the Swiss at the Australian Open but had fallen to him twice since then.
Federer was unrecognisable from the player who dominated Novak Djokovic in his final round-robin match, struggling on serve and hitting a total of 26 unforced errors compared with just five against the Serbian.
But Tsitsipas belied his years with a performance full of confidence and grit, saving 11 out of 12 break points during the match.
Coming into the match, the Greek 21-year-old led the tournament in service games won, with 35 out of 37.
Tsitsipas conceded a break point in his first game as cries of "Let's go Roger, let's go" rang around the O2 Arena but he survived the scare and broke Federer in the next game.
Thereafter it was a case of what might have been for Federer, who dropped just six points on his serve in the first set and saw a whopping six break points come and go.
Tsitsipas was forced to dig deep to see out the set, needing seven set points before he finally closed it out 6-3.
Federer was in deep trouble when Tsitsipas broke him to love in the third game of the second set but he finally made a breakpoint count -- his 10th, to level at 2-2.
Tsitsipas, dominating rallies from the back of the court, broke back straight away with a forehand cross-court winner for a 3-2 lead.
At 5-4 down Federer knew he had to break Tsitsipas for only the second time in the match.
The Greek slipped to 15-40 down but Federer again could not take advantage, spraying a forehand out to give his opponent a match point and he won with an ace.
Austrian fifth seed Dominic Thiem plays defending champion Alexander Zverev of Germany in the second semi-final later on Saturday.