Novak Djokovic's quest for a record-equalling sixth ATP Finals title was ended by German third seed Alexander Zverev in a high-quality semi-final.
World number one Djokovic was beaten 7-6 (7-4) 4-6 6-3 as 24-year-old Zverev booked his place in Sunday's final against Russia's Daniil Medvedev.
Zverev played superbly throughout, serving well and patiently trading from the baseline to wear Djokovic down.
Defending champion Medvedev beat Norway's Casper Ruud in Turin.
Zverev sealed victory with a huge ace at 11:40pm local time and goes on to meet US Open champion Medvedev, who clinched a comfortable 6-4 6-2 win several hours earlier, at 5pm (16:00 GMT) on Sunday.
"It took a lot of physical strength to beat Novak, every time we play it takes hours," said Zverev, who also beat Serb Djokovic in the Olympic semi-finals but lost to him at the Australian Open and US Open.
"I've not spent more time with anybody on court than him this year. I'm happy to win, happy to be in the final and give myself the best chance there."
After the defeat, Djokovic did not want to be drawn on whether he would play at the Australian Open in January after tournament director Craig Tiley confirmed unvaccinated players would not be allowed to compete.
"We'll see," said the nine-time Melbourne men's champion, who has not revealed his vaccination status.
A tight first set saw both players look comfortable on serve until Djokovic, helped by clinching a 34-shot rally with a deft backhand, earned a set point at 5-4.
Zverev saved that and was unable to take two break points himself in the next game as the opener moved into a tie-break.
The 2018 champion continued to play with patience, power and precision, allowing him to edge the tie-break and become the first opponent to take a set off 34-year-old Djokovic this week.
There were signs early in the second set of Djokovic losing focus, only for the 20-time Grand Slam champion to recover strongly and break for 5-4 before serving out to force a decider.
Zverev broke for a 3-1 lead in the third set after Djokovic lost patience in the rallies and made four unforced errors in the game.
After surviving a break point to hold for a 5-2 lead, the German served out to love to become the only player to beat Djokovic twice in another highly successful season for the Australian Open, French Open and Wimbledon champion.