The 23-time Slam champion, who will equal Margaret Court’s all-time haul of major titles if she beats Angelique Kerber on Saturday, needed just an hour and 10 minutes to defeat Julia Goerges 6-2 6-4.
Williams, who gave birth to daughter Olympia just over 10 months ago, produced the most impressive display of her comeback and will now attempt to stage a repeat of the 2016 final, when she defeated German Kerber in straight sets.
Williams said: “It’s crazy. I don’t even know how to feel. I didn’t expect to do so well in my fourth tournament back. I just feel when I don’t have anything to lose, I can play so free. It’s definitely not normal for me to be in a Wimbledon final. I’m just enjoying every moment.”
Goerges was playing in her first slam semi-final and Williams her 35th, so it would have been no surprise if the German was a little over-awed, but far from it.
The 29-year-old came out hitting the ball cleanly and landing plenty of winners but, after four very competitive games, Williams pulled away.
Goerges was the first top-50 player the American had faced during the tournament so there was a sense she had not been properly tested, but Williams was simply on another level.
Chasing down Goerges’ powerful shots and sending them arrowing into the corners, Williams, who has not lost a Wimbledon semi-final since being beaten by sister Venus in 2000, looked a woman on a mission.
She reeled off the final four games of the opening set and quickly moved in front in the second. Goerges clawed her way back from 2-5 to 4-5, breaking the Williams serve for the only time in the match in the ninth game.
But Goerges was broken again in the final game and, although she hit 20 winners to 16 for Williams, there was no doubt who was the superior player.
The win extended Williams’ unbeaten run at Wimbledon to 20 matches, dating back to a third-round loss against Alize Cornet in 2014.
Roger Federer crashed out of Wimbledon after a marathon five-set shoot-out with big-serving Kevin Anderson in the quarter-finals.
The eight-time champion was two sets up and had a match point in the third, but almost three hours later he trudged off on the end of a seismic 2-6 6-7 (5/7) 7-5 6-4 13-11 upset.
Federer found himself scheduled on Court One having been ousted from his usual Centre Court domain for the first time in three years.
But he found himself in even more unfamiliar territory with an inspired Anderson’s relentless, thudding serve eventually overpowering the 20-time grand slam winner.
The setting was not the only thing alien to the defending champion.
When Anderson broke in the second set it was the first time the Swiss had dropped serve at this Wimbledon.
In their four previous meetings Anderson, 32, had not taken a set off Federer. Nor had anyone over the last 34 sets Federer had played at the All England Club, until Anderson nicked the third.
That meant Federer had equalled but not bettered his previous best set-winning streak which came between the third round in 2005 and the final in 2006. But that turned out to be the least of his worries.
There was little sign of the drama which unfolded when Federer raced through the first set in 26 minutes.
Yet Anderson, the eighth seed, was meant to pose a far greater threat to Federer than his previous four opponents, and so it proved.
The first hiccup surfaced at the start of the second set with Anderson breaking the Federer serve and ending that run of holds.
Normal service was resumed for a while at least as Federer held to love before immediately breaking back and taking the ensuing tie-break.
Anderson was sticking to his guns, though, and after saving match point the eighth seed secured another break of the Federer serve and snatched a set back.
When Anderson broke again in the fourth, Federer was suddenly on the ropes.
The Swiss lost the set in a flurry of aces, with Anderson’s relentless, powerful serve sending the match into a decider.
The final set lasted 90 minutes, and it was captivating stuff. Federer eked out a break point at 4-3, Anderson quickly snuffed it out, then Anderson served to stay in the match, and did so to love.
On they went, both holding to love for 10-10, but at 11-11 it was Federer who blinked first, a double fault handing Anderson a rare break point which he converted.
Anderson needed four more booming serves to reach a first Wimbledon semi-final, and he found them.
Federer had been pursuing a 13th Wimbledon semi-final and a 44th appearance in the last four of a grand slam.
“I’m not quite sure what to say, I had to try my best to keep fighting,” Anderson told the BBC.
“I scraped through the third and fourth sets and by the end I thought I did a great job. Beating Roger Federer will be one to remember, certainly in such a close match.
“I just kept telling myself to keep believing, and that today it would be my day. That’s the mindset you need against someone like Roger. I just gave it my all and I’m ecstatic to get through that.”
The seven-time champion, who missed the tournament last year, was outplayed by Italian Camila Giorgi initially but fought back impressively to win 3-6 6-3 6-4 on Centre Court.
Having swept all before her in the last two years she played Wimbledon, in 2015 and 2016, American Williams has now extended her winning streak at the All England Club to 19 matches.
This is just her fourth tournament back since giving birth last September, and Williams is one win away from a 10th Wimbledon singles final appearance.
Williams will next face Germany’s Julia Goerges, the 13th seed, who reached her first grand slam semi-final with victory over Kiki Bertens.
The 29-year-old dropped the first set to Dutch 20th seed Bertens but fought back to win 3-6 7-5 6-1.
Angelique Kerber admitted nerves almost got the better of her after needing seven match points to see off Russian youngster Daria Kasatkina.
Kerber came out on top of a spectacular 25-shot rally to force the all-important match point number seven, and finally got the job done as Kasatkina netted a forehand, the German relieved to be a 6-3 7-5 winner.
“We both played at a really high level, starting from the first point,” Kerber said.
Kasatkina had Kerber scurrying and scrambling during some compelling rallies but ultimately a vulnerable serve, which offered up seven double faults, let her down.
Seeded 11th, Kerber seems to be approaching something close to her 2016 peak, when she won her two grand slam titles and reached the final at Wimbledon.
The 30-year-old slipped out of the world’s top 20 after a miserable 2017, but she has rediscovered her game this year.
“I’m looking forward now to playing the semis here,” Kerber added. “That is where I put my focus on right now, not about the results I had before. It’s just about the next match now.”
That next match will be against another 21-year-old in 12th seed Jelena Ostapenko, who won last year’s French Open.
Ostapenko roared into her first Wimbledon semi-final with a display of power-hitting against Dominika Cibulkova.
The Latvian struck 32 winners to just six from her opponent, with Cibulkova’s second serve taking a pummelling, and won 7-5 6-4 in an hour and 22 minutes.
“I knew I had to be aggressive otherwise she would have opportunity for winners so I just went for my shots,” Ostapenko said.
“Angelique is a great player, it’s going to be a battle, a tough match probably with long rallies, but I will prepare well and be confident.”