The Russian beat Spain's Maria Jose Martinez-Sanchez 4-6, 6-3, 6-0 in two hours and 17 minutes and will play either Venus Williams of the United States or Poland's Agnieszka Radwanska in Friday's semifinal.
As in previous rounds, Safina started poorly but once she got into her stride in the second set her tennis proved too much for the Spaniard, who had beaten Russia's Nadia Petrova in the previous round.
Earlier in the day, Svetlana Kuznetsova kept her nerve to ride a fast start and beat former world No. 1 Jelena Jankovic in straight sets
The Russian won the first set 6-1 and came through a nervy second-set tie break 7-3 to beat the two-time defending champion in an hour and 38 minutes, avenging her defeat in the 2007 final.
The seventh seed will now face rising Belarusian star Victoria Azarenko in the other semifinal after the sixth seed beat Estonia's Kaia Kanepi 7-6 (7-5), 6-3.