Latvia's Sevastova sprung a surprise early on, breaking twice to take a 4-0 lead before going on to win the first set.
Yet Kvitova came back to win 2-6, 6-2, 6-3 and reach the last four in Stuttgart for the third time in her career.
"It was really difficult today, but I am very happy to be in the semi-final. I feel good and healthy," said Kvitova after the match.
Along with Japanese world No 1 Naomi Osaka, Kvitova is one of the favourites in Stuttgart.
She will face either the Netherlands' Kiki Bertens or Germany's Angelique Kerber in the semi-finals on Saturday, before potentially meeting Osaka in Sunday's final.
"If I play against Angie in the semi-final, it will be like a Fed Cup tie because the crowd will be behind her," said Kvitova.
Results from the WTA tournament in Stuttgart on Friday (x denotes seeding):
Petra Kvitova (CZE x3) bt Anastasija Sevastova (LAT x7) 2-6, 6-2, 6-3