The American former world number one overpowered Germany's Julia Gorges 6-2 6-4, while Kerber beat Latvia's Jelena Ostapenko 6-3 6-3.
Saturday's final will be a re-match of the 2016 showpiece, which Williams won.
Williams will be seeking a record-equalling 24th Grand Slam title and her first since giving birth in September.
Williams was in control from the outset against 13th seed Gorges, who was making her Grand Slam semi-final debut.
It was the first time at these championships that the American had faced a player ranked in the top 50 and she stepped up with a powerful display that also showed better movement around the court than in previous rounds.
She broke in the sixth game of the first set when Gorges went wide and then took the set on the German's serve when her opponent sent a forehand wide.
The second set followed a similar pattern, with the only brief wobble coming in the ninth game when Williams was broken. But she struck back immediately and looked to the sky when an attempted lob from Gorges flew out to give her the victory.
Gorges, who had spent more than 10 hours on court before this match, the longest of any of the semi-finalists by around two and a half hours, was put out of her misery on Centre Court in just 70 minutes.
"It's crazy. I don't even know how to feel because I literally didn't think I'd do this well in my fourth tournament back," said Williams.
"I don't have anything to lose and I feel I can play so free. That's what I'm doing.
"This is not inevitable for me, I had a really tough delivery and multiple surgeries and almost didn't make it to be honest. I couldn't even walk to my mailbox, so it's definitely not normal for me to be in a Wimbledon final.
"I'm enjoying every moment."
Williams only returned to the Tour in March, having "almost died" giving birth to her daughter last September.
Despite her maternity break, she is now into a Grand Slam final for the 12th consecutive year.
Two-time Grand Slam champion Kerber reached her second Wimbledon final with a commanding performance against an error-prone Ostapenko.
The 11th seed saved a break point in game six before breaking the Latvian's serve in the next game.
The 30-year-old then gained an early break in the second set on her way to the victory.
"It is such a great feeling to be back in the final and to play on Centre Court is always a great experience," said Kerber.
"I'm happy and proud to be in another Grand Slam final, I will just try to play like I did and just focus on my game.
"Jelena is always fighting until the last point, hits the ball really hard, and I was trying to stay focused. It was quite tough but I'm happy to be through."
Ostapenko, who won the 2017 French Open title, was playing in her first Wimbledon semi-final.
Despite making 18 first-set winners compared to only six from Kerber, the 21-year-old also made 19 unforced errors, with Kerber only making two.
The former world number one then capitalised on more poor play from Ostapenko, breaking her serve at the first time of asking in the second set and again in the sixth game.
Ostapenko saved a match point in the seventh and gained one break back, but it was not enough against the 2016 Australian Open and US Open champion. SHARE THIS STORY USING ANY OF THE BUTTON BELOW ⬇ PLACE YOUR TEXT ADVERT BELOW ⬇⬇⬇