As Williams shook off a lethargic start and began to apply some pressure, Vesnina kept her poise, finishing off the contest on her fourth match point after fending off six break points in the final game.
She'll play Kristina Mladenovic for a place in the final after the French player's 3-6, 7-6 (7/4), 6-2 victory over former world number one Caroline Wozniacki.
"When I was up three-love in the first set she was missing some easy shots," Vesnina said of Williams. "She looked tired and slow on the court. Then, all of a sudden, she started moving around, hitting great shots, winners from all over the place.
When Williams leveled the match at a set apiece, Vesnina couldn't help recalling that the American had saved three match points in her second-round victory over Jelena Jankovic.
More From This Section
"I was like, 'Uh-Oh, it's coming back again. I'm going to be another victim of Venus," she said.
Williams, who ended a 15-year boycott of the event last year but lost her opening match, was in pursuit of a first Indian Wells title.
The 36-year-old star did indeed save three match points against her own serve in the eighth game of the third set -- a game that went to deuce six times before Williams held with a blistering forehand winner.
"I was actually very proud of myself, how I held my nerve," Vesnina said. "I was 0-40 down, but I didn't even think about that it's 0-40. It was point by point, trying to create a good rally, trying to move her around.
Vesnina, a Wimbledon semi-finalist last year, reached the semi-finals of an elite Premier Mandatory level tournament for the first time, as did the in-form Mladenovic -- whose season so far has included a first career title in St. Petersburg and a runner-up finish in Acapulco this month.
- Mladenovic mixes it up -
==========================
It took Mladenovic some time to find her way into the match against 2011 Indian Wells champion Wozniacki.
She was unable to convert nine break points in the opening set as Wozniacki powered to a 5-1 lead, finally breaking the Dane for 5-2.
"I went for my game," Mladenovic said. "I went for some variation. I think I played differently at some points, trying to use more the court to make her run, as well, because she was doing that pretty well to me.
"Something new I put today was the serve and volley on such important points. I impressed myself with that!
"It paid off, and it gave me a chance to fight a third set. I think the third set was the best of today from me.