Two-time Wimbledon champion Kivitova, 32, overcame a sluggish start and 10 double faults to beat Madison Keys 6-7(8-6) 6-4 6-3 in her semi-final.
A former world top-four player, 28-year-old Frenchwoman Garcia became the first qualifier to reach the final of a WTA 1000 tournament when she saw off sixth-seeded Belarusian Aryna Sabalenka 6-2 4-6 6-1 in the other semi.
Since battling her way through qualifying, Garcia has notched wins over three top-10 opponents, Maria Sakkari (4), Sabalenka (7) and Jessica Pegula (8).
Kvitova is set to return to the top 20 in the rankings on Monday after overcoming Keys, the 2019 Cincinnati champion in a torrid battle.
"I expected it to be tough but I didn't expect it to be that tough," said Kvitova. "I don't really care about the ranking."
"Being in the final is of course more important, that is why I play tennis to be in the final and fight for the trophy."
Garcia, who leads the WTA Tour in aces, dominated the opening set against Sabalenka, particularly on her serve where she was 100 per cent on first serve points won.
The Frenchwoman was two-for-two on break opportunities as well including one to clinch the opening set while Sabalenka could not manage a single break chance.
Garcia was in complete control when the match was halted due to rain at 1-1 in the second. But when play resumed, it was Sabalenka who benefited from the delay.
Both players struggled to hold serve after the restart. There were five consecutive breaks until Sabalenka finally held to go up 5-3 on the way to levelling the contest.
The second rain delay came at 3-1 in the third right after Garcia had broken Sabalenka. But this time, when play restarted the Frenchwoman swept the next three games to end a long day with a victory