Media playback is not supported on this device
The Swiss, 35, won 7-6 (7-4) 7-6 (7-4) 6-4 to reach his 11th Wimbledon final, having last won the title in 2012.
He will face Croatia's Marin Cilic after the seventh seed beat American 24th seed Sam Querrey 6-7 (6-8) 6-4 7-6 (7-3) 7-5 on Centre Court on Sunday.
Cilic, 28, is into his second major final after winning the 2014 US Open.
"It's unbelievable," said Cilic, the second Croat to reach the men's final after Goran Ivanisevic won in 2001.
"I've been playing really great tennis."
Federer has already added to his lengthy list of achievements by reaching a record 29th Grand Slam final, becoming the second-oldest man to do so after the 39-year-old Ken Rosewall reached the 1974 Wimbledon final.
Having waited five years to win his 18th major title at this year's Australian Open, Federer could make it 19 only six months later.
"I feel very privileged to be in another final," he said.
"I've got the pleasure to play on Centre Court another time. I can't believe it's almost true again. I'm happy to have a day off to reflect on what I've done at the tournament."
Media playback is not supported on this device
Federer had won his past seven matches against Berdych, and 18 of 24 in all, but the Czech made him work for number 19.
There were just three breaks of serve over two hours and 18 minutes, two for Federer, who hit 53 winners to Berdych's 31 in a high-quality contest.
After dropping only one point on his serve as he eased 4-1 clear, Federer offered up two double faults that allowed Berdych to peg him back and earn a tie-break.
Again Berdych came back from an early deficit to trail 4-3 but a forehand error returned the advantage and Federer capitalised to clinch the set.
It was a blow for the Czech, but he fended off break points early in the second and kept pace with the seven-time champion.
Federer needed to produce a magnificent dipping forehand winner to hold serve at 3-3, and it was the same shot that would dominate the second tie-break.
Four brilliant forehands in a row gave the Swiss a 5-1 lead that proved enough for a two-set lead, and there was more magic off that wing in the third.
Berdych saw a chance to extend the contest disappear when Federer saved two break points with successive aces before breaking in the next game.
At 5-3, the Swiss produced a stunning forehand flicked pass that had the 15,000 spectators on Centre Court gasping, and moments later he served out victory in his 42nd Grand Slam semi-final.
Federer saved a match point on his way to beating Cilic in last year's quarter-finals, and said: "Last time we had a brutal match - I was two sets down. I had to get lucky to win.
"Marin is a great guy. He's a lovely guy, in his first Wimbledon final.
"He crushed me at the US Open a few years ago. I hope he doesn't play that good."
Media playback is not supported on this device
Boris Becker, three-time Wimbledon champion
Usually cars have five, maximum six gears - Roger Federer seems to have 10 gears. Whenever he's in trouble he comes out with an even better shot.
All credit to Berdych - he really took it to him and played great under pressure - but every time we thought he had a little bit of a chance Roger was just coming up with another magical shot.
That's what makes him the greatest of all time - to do it over such a long time. At 35, potentially playing your best tennis, who would have thought that?
Media playback is not supported on this device
Querrey, 29, had played three successive five-set matches to reach his first Grand Slam semi-final, and almost forced a fourth before Cilic finally saw off the American's challenge.
Both men had more than 100 aces to their name heading into the semi-finals, and it was the Croat who had more success in breaking down the big serve.
Cilic won more than twice as many points on return and earned 14 break points to Querrey's three, but the American saved 10 and was two service holds from taking it to a fifth set.
He edged the first set from 4-1 down in the tie-break before Cilic earned the first break of the match at 3-3 on his way to levelling at one set all.
The match was over two hours old before two loose shots from Querrey - a backhand error followed by a forehand into the net - separated the pair in the third set tie-break.
The pair's previous meeting at Wimbledon in 2012 lasted over five hours and finished 17-15 to Cilic in the fifth set, and when a wayward Cilic smash helped Querrey move ahead in the fourth, another final set seemed inevitable.
However, Cilic played a fine game to level at 4-4 with a drop volley and an attacking return of serve, and avoided the need for a third tie-break when he earned two match points at 6-5 and found a forehand winner on the second.
"Sam was playing high-level tennis, especially in the first set," said Cilic.
"I was 4-1 up in the tie-break and didn't convert. After that I was better in the return games. The level was really high."
Roger Federer is one win from a historic eighth Wimbledon title after beating Czech 11th seed Tomas Berdych in straight sets in the semi-final.