Home favorite Krejcikova rallied from a set down to win the final 5-7, 7-6 (4), 6-3.
Krejcikova hit her seventh ace to convert her sixth match point. The Czech prevailed in 3 hours, 16 minutes on an indoor hard court in the eastern Czech city of Ostrava.
It was her first victory over top-ranked Swiatek after two defeats.
French and US Open champion Swiatek brought a 10-win streak into the final while Krejcikova came in with an eight-win streak after taking Tallinn last weekend.
The Czech player got the decisive break in the eighth game of the final set before serving the match out to win her fifth career title.
“It feels great,” said Krejcikova, the 2021 French Open champion. She thanked Swiatek “for bringing the best out of me today.”
It was only the second loss for Swiatek in her 12 career finals. She was previously beaten by Polona Hercog in her debut final in Lugano in 2019.
After her semifinal victory over Ekaterina Alexandrova on Saturday, Swiatek became the first WTA Tour player since 2017 to achieve 60 wins in a calendar year.
In the first set, Swiatek saved three break points in the third game before building a 5-1 lead. Krejcikova came back with two breaks, but Swiatek converted her third set point.
Swiatek came back from 4-2 down in the second set before losing the tiebreaker.