The top-ranked American defeated 62nd-ranked Petra Kvitova 7-6 (5), 6-2 to reach her third straight Wimbledon final and sixth overall.
Standing in Williams' way in Saturday's final will be 21st-seeded Russian Vera Zvonareva, who rallied to beat Tsvetana Pironkova 3-6, 6-3, 6-2 to reach her first Grand Slam title match.
It's the 10th time in the last 11 years that at least one of the Williams sisters has advanced to the final. Venus and Serena have won eight titles.
Serena, going for a 13th Grand Slam title, has never beaten anyone other than her older sister in the Wimbledon championship match. Serena defeated Venus in the 2002, 2003 and 2009 finals, while Venus won the all-sister showdown in 2008.
"I think there will definitely have to be changes," Serena said. "You can't face the same opponent with the same thing. You always have to come with something new."
Five-time winner Venus was upset in the quarterfinals by Pironkova.
Serena has a 12-3 record in Grand Slam finals and will be heavily favored to beat Zvonareva. Williams has won five of their previous six matches.
"On paper it looks like I should win," Serena said. "But Vera, she's beaten some good people. Her last two matches she's been down a set, so she's obviously a fighter. She never gives up. The biggest thing for me is to stay positive and not put too much pressure on myself."
Zvonareva, the second lowest-ranked player to reach the Wimbledon women's final, said she's not fazed by being such a big underdog.
"I always believe in myself," she said. "I don't care about what everyone says. ... I know if I can play my best tennis, I can beat anyone on the other side of the net. That's what I'm going to try to do on Saturday. I never look at any odds or comparisons. It's not important to me."
Williams, who came into the match with a Wimbledon women's record of 73 aces, had only seven aces but came up with big serves when she needed them.
Kvitova, a Czech left-hander playing in her first Grand Slam semifinal, went for broke and had more winners (24 to 19) than Williams but also more unforced errors (20 to 14).
"It definitely wasn't easy," Williams said after the 93-minute match. "I definitely had to work really hard. I didn't expect to get this far the way I started at the beginning of the tournament."
The 20-year-old Kvitova - who had lost in the first round in the previous two Wimbledons - pushed Williams to the limit in the first set, often controlling the play with her groundstrokes and pinning the champion behind the baseline.
Kvitova broke for 3-2, saved a break point in the next game and held to go up 4-2. But Williams broke back in the eighth game after Kvitova, holding a point for 5-3, missed three straight forehands to lose serve.
Williams went ahead 4-0 in the tiebreaker, let the lead slip to 4-3 and missed two set points before closing it out with a 115 mph (185 kph) service winner.
Williams was in command in the second set and broke twice. She finished the match with a backhand that hit the net cord and dropped over for a winner, then acknowledged the crowd with a wave and a small curtsy.
The match was highlighted by arguably the point of the tournament, a 19-stroke rally in the sixth game of the second set that left both players gasping for breath. The point featured great gets by both players, lobs, volleys and finally a forehand volley winner by Kvitova. Two points later, she double-faulted for the break.
"That was really exciting. Believe it or not, I even thought so," Williams said. "I thought if I could have won that rally it would have been an awesome fist pump."
In the first match, Zvonareva came from a set down to beat Pironkova, the 82nd-ranked Bulgarian. The Russian was in complete command after breaking in the sixth game of the second set, winning 10 of the last 13 games.
Zvonareva has battled a reputation for fading in big matches but held her nerve on the biggest stage in tennis. Long considered a top talent in the game, she was seen as someone who has failed to live up to her potential, even breaking into tears during matches.
"Right now experience helps me a lot," Zvonareva said. "I've been in a lot of different situations in the past of my career, and I think I know how to turn the matches around much better now."
Zvonareva prevented Pironkova from becoming the first ever unseeded women's singles finalist at the All England Club.
The 25-year-old Zvonareva's previous best showing in a Grand Slam was a semifinal appearance at the 2009 Australian Open.
Pironkova, who stunned five-time champion Venus Williams in the quarterfinals, seemed in control after breaking Zvonareva in the sixth game and taking the first set in 32 minutes.
But the matched turned around completely after the Russian converted on her first break point to go up 4-2 in the second set. She went to the net behind a forehand approach and put away a backhand winner for the break.
From the middle of the second set, Zvonareva dictated the pace and won six of seven games at one stage. She broke two more times in the third set and served out the match convincingly, finishing with an inside-out forehand winner.
Zvonareva had 31 winners and 13 unforced errors, while Pironkova had 23 winners and 16 errors.
The men's semifinals are Friday, with second-seeded Rafael Nadal facing No. 4 Andy Murray, and No. 3 Novak Djokovic playing Tomas Berdych. Nadal leads Murray 7-3, while Djokovic is 2-0 against Berdych.