Defending St Petersburg champion Kvitova impressed throughout her run to the Australian Open final and saw off the challenge of Victoria Azarenka in her opening match in Russia.
Getting past Donna Vekic was not so simple, though, and the world number 30 picked up her first win over Kvitova with a 6-4 6-1 triumph.
Vekic had all the answers to Kvitova's game, showing great athleticism to run down her drop shots and going toe-to-toe with her from the baseline – the Czech's mistakes proving costly.
She will meet Vera Zvonareva in the last four after the former world number two triumphed 6-3 7-6 (7-3) against third seed Daria Kasatkina.
The second semi will see third seed Aryna Sabalenka face Kiki Bertens, the world number eight needing three sets to see off Anastasia Pavlyuchenkova 6-2 3-6 6-0.
In Hua Hin, Muguruza encountered similar problems to Kvitova as her run ended in a shock loss to Dayana Yastremska.
Muguruza started superbly and converted her sixth break point in the opening game to take an early advantage.
Yastremska got back on terms and wasted two set points before the tie-break, where another four chances came and went before she finally moved ahead.
The first set had been tight but the 33-minute second was one-way traffic as Muguruza's game fell apart, Yastremska completing a 7-6 (7-5) 6-1 victory.
Next up for the Ukrainian is Magda Linette, while the other last-four encounter sees Tamara Zidansek take on Ajla Tomljanovic.