Krejcikova battled to a 5-7, 7-6(4), 6-3 victory in three hours and 16 minutes to claim her fifth WTA Tour singles title and second in as many weeks.
The 26-year-old handed Swiatek just her second career defeat in 12 tour-level singles finals, and first in three years. The US Open champion had won her last 10 finals without dropping a set, including all seven in 2022.
"Iga, you've been ruling the whole season, you've been beating everybody on the tour so I'm really sorry for today, but I'm really glad that I beat you," Krejcikova told Swiatek with a smile at the presentation ceremony.
"It was an amazing match. I think we both gave our all. Thank you for bringing the best out of me today."
Belgium's Elise Mertens stormed to her first title of the year, thrashing third seed Alize Cornet 6-2 6-0 in the final of the inaugural Jasmin Open.
Mertens, who won the last 11 games in succession, said: "It means a lot. I had a pretty tough year.
"When they said I was in my first semi-final this year, I was like, 'Okay, it's October, it's never too late to start the year, or end the year with a good one.' So I'm very happy about it."
Doing what nobody has been able to do for a long, long time ð— wta (@WTA) October 9, 2022
ð¨ð¿ @BKrejcikova defeats Swiatek in a final after 3h16m to clinch her fifth career WTA singles title!!!#OstravaOpen pic.twitter.com/ljCYStnI25