Svitolina is at the WTA Finals for the first time since reaching the 2019 final. She has returned to the top 10 this season for the first time since 2021.
Svitolina won 6-3 3-6 6-1. Sabalenka forced a deciding set after unravelling in the latter stages of the first, then lost the last six games.
A semi-final place slipped away. Sabalenka, unlike Svitolina, appeared unable to keep a positive outlook when the match turned against her.
"It was an extremely tough match, especially mentally,"Svitolina, 32, said."I was just trying to play one point at a time.".
Sabalenka was chasing a first win at the tournament. She had reached the knockout stages in each of the past four years and lost to Rybakina in last year's final.
The world number six stayed calm at the finish. Sabalenka saved two break points, then double-faulted to give Svitolina a third, which Svitolina took before serving out the win.
Sabalenka's game had already come apart once. She dropped the first set by losing six of seven games, including two breaks to love.
Her reply was strong. A drop in unforced errors brought a double break and a 5-1 lead, and she served out the second set at the second attempt.
The inconsistency came back in the decider, and the frustration with it. After giving up an early lead, Sabalenka threw her racquet to the ground.
Svitolina remained solid and quickly turned the set around. Sabalenka also crouched at the back of the court after losing a point and took her anger out on her racquet.
For much of the year Sabalenka had been at her dominant best. She has the most straight-set wins of any player this season, with 43.
She has also won eight of her 13 meetings with other top-10 players. Two of the losses came in major finals against Rybakina, and two came this week.
Those are the moments she will need to handle better, mentally as much as physically, if she is to reassert herself next season.