The Spanish world number two overcame Greek Tsitsipas 6-4 4-6 6-2 in London.
Nadal, 34, had been the more consistent player until losing serve to drop the second set, but fought back to dominate the decider.
The 20-time Grand Slam champion will play Russian Daniil Medvedev in the semi-finals at the O2 Arena on Saturday.
Medvedev is already guaranteed to win Group Tokyo 1970 with Novak Djokovic and Alexander Zverev contesting the remaining last-four place at 14:00 GMT on Friday.
“I was playing, I think, a great level of tennis for almost two sets,” said Nadal, who hit 32 winners and made just 13 unforced errors.
“The score was close, but in terms of feeling I felt that I was playing better than him. Then the situation changed. He won that game and then I was starting to suffer a little bit more with my serve.
“But it’s always a good feeling when you are playing well and you’re playing against the best players of the world. You know you’re going to be in a tough fight. That’s what happened tonight. I was able to find a way to win. Very happy.”
Earlier on Thursday, the already qualified Dominic Thiem lost 6-2 7-5 to Russian Andrey Rublev in a dead rubber.
US Open champion Thiem had reached the last four by beating Nadal and Tsitsipas to win Group London 2020.
- Nadal wins 13th Roland Garros title; ties Federer with 20 Grand Slams
- World No. 1 Djokovic stunned by rising star
- Novak Djokovic suffers joint heaviest defeat of his career
Nadal keeps alive hopes of first ATP Finals title
The ATP Finals is the one major title Nadal is yet to win, and he has given himself a chance to finally add it to his CV, having lost in the 2010 and 2013 finals.
Nadal beat Tsitsipas in the group stage of this tournament last year, though it was the Greek who went on to win the biggest title of his career to date.
Both men began impressively and were secure on serve in the first six games, until Nadal created two break points at 3-3. Uncharacteristically the Spaniard let Tsitsipas escape, showing his frustration when missing a second-serve return at 15-40.
The 22-year-old was not so lucky in his next service game, with a backhand error and double fault handing the break to Nadal, who then served out the set with successive aces.
Nadal had won his previous 70 matches after taking the first set – dating back to February 2019 – so Tsitsipas was facing a huge task to stay in the tournament.
The momentum seemed to be all going Nadal’s way when he brought up another break point in the first game of the second set but Tsitsipas saved it with a superb cross-court backhand winner.
The French Open semi-finalist was having to work a lot harder to hold, with Nadal dropping only six points in his first nine service games. However, out of nowhere, Tsitsipas broke to level the match with a Nadal double fault sending the match into a decider.
The play became scrappy at the start of the third, with two Tsitsipas double faults handing Nadal an immediate break, only for the Spaniard to send a backhand into the bottom of the net to allow Tsitsipas to level immediately. Nadal then broke again, to love, to regain the advantage at 2-1, helped by more errors from his opponent.
Tsitsipas was not to get another chance, with Nadal upping his level again to secure the double break for 5-2 and a backhand down-the-line winner took him through in two hours and four minutes.
“I wasn’t able to maintain my game in the third set,” said Tsitsipas. “I did try to stay calm and concentrated, but I seemed to make easy unforced errors when Rafa was persistent, and I could see that he’s ready now to face me 100%. And I just gave it away. My focus wasn’t there.”