The 20-year-old Kasatkina rallied to win the biggest victory of her career and defeat seven-time Grand Slam winner Williams, extending a year-long assault on top players, Grand Slam winners and former world number ones.
Kasatkina, seeded 20th, next faces either world number one Simona Halep or Japan's Naomi Osaka in Sunday's final.