Muguruza took a 3-0 lead in the second set and appeared headed to the third round at Indian Wells, but the 22-year-old fought back. Vickery will face Naomi Osaka, who upset Agnieszka Radwanska after defeating Maria Sharapova in the first round.
Kvitova won the Qatar Open last month and has defeated six top-10 players this year.
Other second-round winners were No. 5 seed Karolina Pliskova, 7-6 (4), 6-1 over Irina-Camelia Begu; No. 6 Jelena Ostapenko stopping Belinda Bencic 6-4, 3-6, 6-1; No. 17 CoCo Vandeweghe defeating Kaia Kanepi 6-0, 7-6 (6); and Kristina Mladenovic edging Samantha Stosur 7-5, 7-5.
Nick Kyrgios withdrew Friday, citing a lingering elbow injury. He hasn't played an ATP match since losing to Grigor Dimitrov at the Australian Open. He will be replaced by lucky loser Matteo Berrettini.