Williams, the top seed in Florianopolis, dropped to the shock 4-6 6-4 7-5 defeat after tiring in the final set of the two-and-a-half hour match.
Russian Puchkova, who reached a career high 32nd in the world in 2007 but has never won a WTA title, will play Monica Niculescu in the final.
Puchkova delivered two telling blows to Williams, breaking late in both the second and third sets after the American had taken the opener thanks to a break of her own at 5-4.
Williams, playing her first tournament since the Australian Open in January, was broken a total of six times.
“I gave my best but just couldn’t play consistent enough today,” Williams said. “She played so well, it was hard.”
Romanian Niculescu steamrolled seventh seed Kristina Mladenovic of France 6-0 6-2 to set up the clash with Puchkova.
The 25-year-old from Moscow has not reached a final since 2006, when he secured two runners-up finishes.
“I’ll just try to play my best,” Puchkova said. “Let’s see what’s going to happen.”
At the Acapulco International, top seed Sara Errani breezed into the final with a 6-2 6-1 win over Alize Cornet, the third seed from France.
The Italian world number eight will play second seed Carla Suarez Navarro for the title after the Spaniard secured her progress through with a 6-2 6-1 win over her compatriot Silvia Soler Espinosa.
Brasil Cup results
Olga Puchkova (Russia) beat 1-Venus Williams (U.S.) 4-6 6-4 7-5
Monica Niculescu (Romania) beat 7-Kristina Mladenovic (France) 6-0 6-2
Acapulco International results
1-Sara Errani (Italy) beat 3-Alize Cornet (France) 6-2 6-1
2-Carla Suarez Navarro (Spain) beat Silvia Soler Espinosa (Spain) 6-2 6-1
Malaysian Open results
Bethanie Mattek-Sands (U.S.) beat 2-Hsieh Su-Wei (Taiwan) 7-5 6-2
3-Anastasia Pavlyuchenkova (Russia) beat Ashleigh Barty (Australia) 6-2 6-0
Karolina Pliskova (Czech Republic) beat Patricia Mayr-Achleitner (Austria) 7-5 6-1
4-Ayumi Morita (Japan) beat Luksika Kumkhum (Thailand) 6-7(7) 6-4 6-1