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.
"I'm so proud of myself today, a great performance and once again the people were great," he said.
"I really enjoyed myself on the court and sometimes in matches like these you wonder how you recover from difficulties and break point down.
"It is a mental struggle and I'm proud how many I saved today, I was trying not to give an easy time to Roger. He was playing well."
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 London's O2 Arena but he survived the scare and broke Federer in the next game, taking advantage of two missed overheads from the Swiss.
- Federer missed chances -
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 in a dramatic 13-minute final game in which he saved two break points and needed seven set points to close 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 break point count -- his 10th, to level at 2-2.
Undaunted, Tsitsipas, dominating rallies from the back of the court, broke again 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 a thundering ace.
Federer, who was shaken by his two fluffed smashes, rued his missed chances.
"I'm frustrated I couldn't play better, and when I did and fought my way back, I threw it away again," said the Swiss.
"It was also parts of him. He did come up with the goods when he had to and he was better than me today.
"It's the year-end. It's over now and I can't make it better. I tried everything I could, to be honest."
A year ago, Tsitsipas won the Next Gen ATP Finals. Now, on his tournament debut he is one match away from winning the season-ending event, featuring the year's best eight players.
Tsitsipas first broke into the top 100 of the ATP rankings only 25 months ago.
He will play either defending champion Alexander Zverev or fifth seed Dominic Thiem in Sunday's final.
Stefanos Tsitsipas beat Roger Federer to reach the final of the ATP Finals
Roger Federer failed in his bid to reach the final of the ATP Finals