Alexander Zverev overcame late nerves to secure a 7-6(4), 4-6, 6-3 victory over world number one Novak Djokovic on Saturday to set up a final showdown with Daniil Medvedev at the ATP Finals.
After splitting the first two sets, unforced errors began to creep into Djokovic's game in the third and he sent a backhand long to hand Zverev his first service break of the match for a 3-1 lead.
Two games later, the 24-year-old German appeared to get tight, taking speed off his first serves and pushing his groundstrokes, which opened the door for the resilient Djokovic to break back.
But Zverev pounded a second serve Djokovic could not handle to grab a 5-2 lead before sealing the match with his 14th ace.
"Once Novak gets into a rhythm on the return, he's very difficult, so I tried different things," Zverev said.
"I would have been happy to double fault at times, but I did not want to let him get into a rhythm. I'm happy that I won, but the match could have gone either way."
The victory prevented Djokovic from having a shot at winning a sixth title at the season-ending tournament, which would have tied him with Roger Federer's record haul. Zverev won the title in 2018.
Earlier in the day, defending champion Medvedev stormed into the final after crushing Norway's Casper Ruud 6-4, 6-2.
Medvedev started strongly against Ruud, breaking early to take a 2-1 lead in the first set and dictating play from the back of the court as Ruud struggled to contend with his opponent's deep groundstrokes.
The second set followed a similar pattern to the first, with Medvedev racing into a 4-2 lead before closing out the match in 80 minutes, sending down 17 winners and making just 14 unforced errors in the one-sided victory.
The 25-year-old US Open champion said one key to success was to never let up regardless of what the scoreboard says.
"As soon as you are a set and a break up you feel like you are in control, but that is when the danger is," Medvedev said.
"You need to stay focused and fight for every point. In the last game I had 0-30 on my serve and, until the last point, it is never over. So I am happy I was able to finish it."
Medvedev went undefeated in the round-robin stage of the season-ending tournament with wins over Hubert Hurkacz, Zverev and Jannik Sinner before dispatching Ruud.
"I think all the matches were a great level. Different opponents and different styles," he said.
The result marked world number two Medvedev's ninth win in a row at the ATP Finals and he improved his head-to-head record over Ruud to 3-0.
The Russian holds a 6-5 lead in head-to-head matches against world number three Zverev, including a 6-3 6-7(3) 7-6(6) round-robin win earlier this week.
"There are a few things that I might change, but it was 8-6 in the third set," Zverev said when asked how he will prepare for Sunday's final.
"We're two of the three best players in the world tomorrow on the court. It's going to be a difficult match no matter what."