The first three games in the match resulted in a break of serve, including two from Kvitova. The world No. 11 survived two break points in the eighth game of the opening set on the way to establishing a 1-0 lead.
Barty hit back in the second set, twice breaking Kvitova's serve and holding all of her own to tie the match.
But Kvitova, who served seven aces, edged the Australian in the deciding final set and advance through to meet Sabalenka in Saturday's final.
Two-time Wimbledon champion Kvitova will be looking to win the 28th single title of her career, with her last win coming at the Sydney International in January 2019.
World No. 13 Sabalenka avoided an upset to secure a 6-4, 6-3 after narrowly winning a closely-contested opening set. The Belarusian then raced through the final set for a chance to win her sixth career singles title.