Williams, seeded 17th, trailed 4-2 in the first set but hit back to win 6-4 6-3 against the Czech eighth seed.
The American, 36, is seeking her first Grand Slam trophy since giving birth to daughter Olympia last September.
If she wins it would be her 24th major title - equalling Australian Margaret Court's all-time record.
"The crowd was really rooting for me and I felt so bad because everyone out here was cheering and I wasn't winning so I thought I had to try harder," said Williams.
"I really feel like right now I'm playing free. I was having a baby this time last year so I have nothing to prove."
Williams faces Latvia's 19th seed Anastasija Sevastova, who knocked out defending champion Sloane Stephens earlier on Tuesday, in the last four on Thursday.
Courtesy: BBC