The top-seeded Czech needed almost two hours to see off his seventh-seeded opponent, eventually emerging a 6-3 6-7 (0/7) 6-3 winner.
Berdych will next face Dmitry Tursunov, who reached his first ATP Tour semi-final in 20 months by beating Gilles Muller of Luxembourg 7-6 (9/7) 1-6 7-5.
Jo-Wilfried Tsonga will take on Gilles Simon in the other all-French semi-final.
Third seed Tsonga saved five match points on his way to a 4-6 6-3 7-6 (12/10) victory over Australia's Bernard Tomic.
Simon had a much easier time on court in his quarter-final, dispatching second seed Juan Martin del Potro 6-4 6-3 in one hour and 22 minutes.