Zakopalova, trying to reach her third final this year, broke Vekic's service twice in the final set to close out the match in the southern city of Florianopolis. Zakopalova was runner up to Kurumi Nara of Japan at last week's Rio Open.
Zakopalova, who turned 32 on Monday, said ''conditions are very tough for me because I don't like the heat very much.''
Brazilian Teliana Pereira, who made her second WTA semifinal in Rio before falling to Zakopalova, defeated seventh-seeded Maria-Teresa Torro-Flor of Spain 6-4, 6-3.
Second-seeded Garbine Muguruza of Spain beat South African Chanelle Scheepers 6-2, 6-1 in a second-round match.