With the two-hour, eight-minute victory, Stephens improved to 2-0 all time against Williams and 8-0 in three-set matches in 2017.
In Saturday's final, Stephens will meet the winner between No. 20 CoCo Vandeweghe and No. 15 Madison Keys, who were set to square off in the second all-American semifinal later Thursday night.
"I have no words to describe what I'm feeling, what it took to get here," Stephens said on court post-match. "Just the journey I've been on, I have no words."
Stephens, ranked No. 83 after undergoing foot surgery in late January, previously reached the 2013 Australian Open semis, but now she is into the final of her home Slam.
Originally from Florida, she now lives and trains in California. Several week ago, during her long injury layoff, she was ranked No. 957 in the world.
This marked the first time since Wimbledon in 1985 that four American women reached the semifinals of a Grand Slam event, and the first time at the U.S. Open since 1981.
"For American tennis, there's no question mark," Stephens said. "The proof is in the pudding, and it's all facts. See it how you want it, American tennis, here we are."
In the decisive third set, Stephens broke Williams at love for a 6-5 lead when Venus smacked a backhand wide on game point.
Serving for the match, Stephens closed it out when Williams netted a backhand return of serve. A joyous Stephens began to walk around the court, waving to the crowd and to her player's box.
"It just required a lot of fight, a lot of grit," Stephens said. "I knew if I just hung with it and played my game and didn't get down on myself I would have a few opportunities."
Williams said, "It was definitely a contrast of play. I continued to play aggressive and to play the kind of tennis that it takes to win. I just made too many errors there are at the end."
Stephens broke Williams, 37, twice in the first set, with Williams double-faulting to give the younger player a double break at 5-1.
After Stephens closed out the first set on her serve in just 24 minutes, Williams stepped up her game in the second set. She broke Stephens in the second and fourth games, hitting a backhand volley winner to go ahead 4-0. She won the second set in 30 minutes.
Williams was seeking to reach her third major final of 2017 after advancing to the final at both the Australian Open and Wimbledon. With her younger sister Serena out of the tournament and giving birth to a girl last Friday, Venus Williams was also looking for her first Grand Slam title since 2008.
"For me it's about trying to get the titles, and that's all I could do is to put yourself in position to win," Williams said.
Whether she felt pressure playing a younger American on such a big stage was unclear.
"I felt so much more pressure playing a young American than any other player," Chrissie Evert, the 18-time major champion, said during the match on ESPN. "It might be pressure, it might be ego, but you just don't want the young ones to outshine you.
"You don't want to hand the baton to her yet. Venus still wants to be the leader of the group and the best player."
Now Stephens is one match from proving she is the best player at this U.S. Open.