The 20-year-old Kasatkina rallied to claim 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.
Serving for the match, Kasatkina clinched the victory on her second match point as she raced out to a 40-0 lead. Venus hit a cross-court forehand winner on the first match point but then dumped a backhand into the net to end the two hour, 49 minute marathon showdown.
Ultimately the young Russian proved to be too strong for the 37-year-old Williams, who appeared to hit a wall at about the two and a half hour mark.
The turning point came in the third set as Williams was left breathing heavily on her chair after holding serve in the ninth game to take a 5-4 lead.
Williams, who was winning matches in Indian Wells before Kasatkina was even born, has enjoyed a longevity in tennis that is rarely achieved. But in the end she didn’t have the legs to stay with the rising Russian star, who won the final three games.
Kasatkina fired one ace, hit five double faults and broke Williams’s serve seven times in the entertaining match.
Williams hit more winners, 45-30, and broke Kasatkina six times but she also made five double faults — some at crucial moments in the match.
“Anyone who gets used to losses should give up on life,” Williams said.
Kasatkina continues her Cinderella run through the California desert tournament as she goes for her second WTA title.
She highlighted 2017 by claiming her first crown in Charleston, beating fellow teenager Jelena Ostapenko in the final.
– Four champions –
Kasatkina has beaten all four reigning Grand Slam champions in the past year, including US Open champ Sloane Stephens twice. She did it for the second time in Indian Wells, winning their third round match 6-4, 6-3.
After eliminating Stephens she beat two top 10 players to get to the semis — world number two Caroline Wozniacki in three sets in the fourth round and then No. 10 Angelique Kerber in straight sets in the quarters.
Before running headlong into the Russian juggernaut it had been smooth sailing for Williams into the semis as she did it without having to play someone ranked in the top 20.
In the third round she defeated her sister Serena, who had a protected ranking of 22 after she took 14 months off to have a baby.
Kasatkina is now 2-1 overall against Williams having beaten her the first time they play in Auckland in 2016.
“I really just make too many errors. That’s pretty much all — I mean, I have to stop making that many errors against her,” Venus said.
Download our app and read this and other great stories on the move. Available for Android and iOS.