The Australian Open champion survived two match points in the final set to overcome the 10th seed 6-2 3-6 7-6 to reach his first Miami semi-final since 2011 and making it 17 wins in 18 matches in the calendar year so far.
It had looked as if he would have little trouble with Berdych, who he has not lost to since 2013, after a routine first set. But he earned another and made no mistake, attacking Zverev's second serve for a 5-4 lead before closing out the first set.
Berdych served for the match at 6-4 in the tiebreak but Federer reeled off four points in a row, including two unplayable serves, and secured the win when the 10th seed crumbled with an very bad second serve.
Nick Kyrgios held off Alexander Zverev in a fascinating quarter-final clash to set up a final-four showdown with former world number one Roger Federer at the Miami Open.
It'll be the past and present vs. the future in the second semifinal at the 2017 Miami Masters on Friday night, as Roger Federer takes on Nick Kyrgios.
Federer feels right at home at Key Biscayne, and so does Caroline Wozniacki - with good reason, since she sometimes practices at the facility.
The Konta-Williams semifinal is scheduled for later Thursday.
How Gibraltar can derail Brexit talks
It hands Spain, which has long held ambitions to reclaim sovereignty of the territory, significant power over Gibraltar's future. The ongoing geopolitical divorce between the United Kingdom and the European Union now has its first custody battle .
The victor will play Federer, who has now won 17 of his 18 matches this year, in the last four. Kyrgios had 16 aces, no double faults and never faced a break point, though his 19-year-old opponent saved five match points before falling.
"I would love it", Federer said.
Spain's 14-time Grand Slam champion Nadal, who lost to Federer in Melbourne, recorded a 6-2 6-3 win over American Jack Sock to reach the last four. That's what happened. Very simple, very straightforward.
In the bottom half of the draw, unseeded Italian Fabio Fognini will face Spain's fifth-seed Rafael Nadal for a spot in the final.
The Swiss saved his second match point with an unplayable first serve and set up his own match point with an ace down the middle.
This will be the second consecutive time two double-digit seeds make the women's final at Key Biscayne, after No. 13 Victoria Azarenka beat No. 15 Svetlana Kuznetsova a year ago.