Novak Djokovic is one step away from his first ATP Finals crown since 2015 after defeating Taylor Fritz in straight sets in Turin.
The Serbian was made to work by the 25-year-old Californian, with both sets going to a tie break.
But Djokovic, 35, edged it both times, winning 7-6 (7-5) 7-6 (8-6) and now faces either Casper Ruud or Andrey Rublev in Sunday's final.
"I had to fight to survive," said Djokovic.
"I knew coming into today's match from yesterday's gruelling battle against [Daniil] Medvedev I knew it would take me some time to adjust and find the dynamic movement I need against Fritz, who is one of the best servers on the Tour.
"I am very pleased to have overcome this one as I don't think it was one of my best days with my tennis, but I managed to hang in there."
Despite not winning the end of season showpiece for seven years, five-time champion Djokovic is now just one match away from equalling Roger Federer's record of six titles.
Britain's Salisbury reaches doubles final
Joe Salisbury will also be part of Sunday's finals day line-up after the Briton and his American partner Rajeev Ram beat top seeds Wesley Koolhof and Neal Skupski 7-6 (9-7) 6-4 in the first doubles semi-final.
It means Salisbury and Ram remain undefeated in Turin after also wining all three matches in the round robin stage.
However, fellow Briton Skupski and his Dutch partner Koolhof - who also lost to Salisbury and Ram in the US Open final this year - will remain the number one doubles pairing in the world this year after wining seven tour-level trophies in 2022.
Salisbury and Ram will meet Nikola Mektic and Mate Pavic or Lloyd Glasspool and Harri Heliovaara in Sunday's final.