The third-seeded Kuznetsova, who will try to make her third straight trip to the final Saturday, rallied to beat the five-time Grand Slam champion Williams, 3-6, 6-3, 6-4.
"I was fighting a lot and I think that was the key today," Kuznetsova said.
Also, top-seeded Belgian Justine Henin downed Italy's Mara Santangelo, 6-2, 6-1, fourth-seeded Serbian Jelena Jankovic was leading No. 6 seed Anna Chakvetadze of Russia, 7-6 (7-1), 3-1, when Chakvetadze retired because of a right shoulder injury, and Alona Bondarenko of Ukraine was leading compatriot Julia Vakulenko, 6-2, 3-1, when Vakulenko had to quit that match with a right wrist injury.
Thursday, Vakulenko beat defending champion Kim Clijsters in straight sets.
In Saturday's semis, Henin plays Jankovic, and Bondarenko faces Kuznetsova.
Police: Sword-wielding man demanded free tacos
Puzzle-maker slips 'Murdoch Is Evil' into Rupert Murdoch's Sunday Telegraph