Playing in only her second grand slam event since she nearly lost her life after giving birth 10 months ago, the American struck 16 winners and just seven unforced errors as she defeated the 13th-seeded German 6-2 6-4 on Centre Court.
Williams, 36, faces former top-ranked Angelique Kerber in the final as she bids for an eighth Wimbledon title to tie Australian Margaret Court's all-time record of 24 grand slam singles titles.
Germany's Kerber dominated former French Open winner Jelena Ostapenko of Latvia in the other semifinal. In the 2016 Wimbledon final, Williams beat Kerber in straight sets.
"It's crazy, I don't even know how to feel, because I literally didn't expect to do this well in my fourth tournament back," Williams said in a televised interview.
Williams, who gave birth to a baby girl, Alexis Olympia, in September, added: "I had a really tough delivery, I had to have multiple surgeries, and almost didn't make it to be honest.
"I remember, I couldn't even walk to my mailbox. It's definitely not normal for me to be back in the Wimbledon finals. I'm taking everything as it is and just enjoying every moment."
Williams, the world No. 181 who was given a protected seeding of No. 25 by tournament organizers due to her pedigree, is two titles shy of Martina Navratilova's all-time women's singles record at the All England Club.
Earlier, Kerber neutralized the booming groundstrokes of Ostapenko to reach her second Wimbledon final.
The former top-ranked German didn't drop a set against the Latvian, winning 6-3 6-3 in 68 minutes on Centre Court.
"She's clearly a really good grasscourt player, and she's been going in the draw really well," said Williams about Kerber, whom she leads 6-2.
"I've been watching her matches. I love watching her play and I'll get to play her now. Whatever happens, honestly, it's an incredible effort for me and just good motivation to keep going for the rest of my career."
Kerber, who beat Williams in the final of the 2016 Australian Open, is ready for a tough match.
"I know that I have to play my best, best tennis to beat her, especially on the grass, on the Centre Court, where she won so many titles here," Kerber, a two-time grand slam winner, said in a news conference.