Vandeweghe, ranked No. 205, rebounded from a terrible start to surprise Zvonareva, the world's No. 9 ranked player.
The 18-year-old Vandeweghe, who grew up about 10 miles from the La Costa Resort where the tournament is being held, outplayed her Russian opponent in both the second and third sets for the biggest win of her short career.
"It's awesome to beat someone at that high of a level," Vandeweghe said. "She's been doing so well. I'm just excited that I was able to play at a high level to beat her."
Vandeweghe, who won three qualifying matches to get into the main draw, won her second straight match after dropping 13 of her previous 15 career WTA matches.
The third-seeded Zvonareva appeared to be poised for an easy win when she broke Vandeweghe's serve the first three times in the opening set. By the time Vandeweghe held serve, she trailed 5-2.
"The first set I was pretty nervous to say the least," Vandeweghe said. "I wasn't playing the way I had been playing to get there."
But the teenager seemed to settle down as she received loud backing from the crowd. After the two traded early service breaks in the second set, Vandeweghe used a late break before serving out to even the match.
"I love playing in front of a big crowd, especially it helps when they are behind you," she said. "In the second set, I had to get my feet going and start dictating with the forehand more."
Vandeweghe served for the match at 5-3, but Zvonareva converted on her third break point to cut the lead to 5-4. But Vandeweghe hit a crushing forehand winner in the next game to secure the upset on her first match point.
"I don't think she surprised me. I've seen her play before," said an emotional Zvonareva, who cried while speaking with reporters. "It's more that I surprised myself. I started pretty good and then I just started playing stupid. I didn't change anything, I just kept playing stupid."
Vandeweghe moved into the quarterfinals against Svetlana Kuznetsova of Russia, who topped Italy's Sara Errani 6-1, 5-7 (5), 7-5.
Pennetta made two early breaks stand up to win the first set before she fell behind 5-2 in the second. Pennetta then reeled off four straight games to take a 6-5 lead.
But the Italian dropped her serve at love to force the tiebreaker. Neither player had led by more than two points in the tiebreaker when Kirilenko saved one match point at 6-4 before Pennetta closed out the second-round match.
"After the first set, I just relaxed a little bit," Pennetta said. "She was making some mistakes at the end of the first set so I was thinking she was going to do the same. But she started to play better and more aggressive. I was a little too far from the line and I was running too much."
Pennetta, who has beaten Kirilenko in their past three meetings, will face No. 2 seed Samantha Stosur of Australia in the next round.
"I have to rest now and be ready for running so much," Pennetta said. "When she hits the ball it's really powerful. My return is going to be really important."
In another second-round match, Slovakia's Daniela Hantuchova defeated Zheng Jie of China 6-2, 6-1.