She will play number 14 seed Daniela Hantuchova of Slovakia, who wore down number 12 Li Na of China 7-5 4-6 6-1.
Playing in scorching temperatures, Kuznetsova survived a determined challenge from Bammer, who had her spinning around in the first set with her big left-handed forehand and well placed serves.
But Kuznetsova roared back in the final two sets, varying her forehand to move her 26-year-old opponent around the court.
"I was so upset because I started to understand how the game was and how I had to play," Kuznetsova told reporters. "But it was all the time really small outs or unforced errors. It was tough. It was very disappointing to do it in three sets, but the end result is what I wanted."
Kuznetsova ended the contest with 39 winners to 24 from Bammer, 17 from her forehand side.
Kuznetsova is now guaranteed to rise to a career-high number three when the world rankings are released on Monday.
In reaching her second Pacific Life Open final, Hantuchova won her third three-set match of the tournament and her ninth this year. While she is one of the thinnest players on tour, she has shown a capacity to outlast much more muscular opponents like Li.
Hantuchova said her fitness had proved crucial.
"I knew in the third set it was going to be a battle, but I felt like physically I was feeling much better on the court," she said.
"Especially the first few games in the third set were very important, and I just tried to save my energy for the points, not to waste it in between, and tried to play very smart. Mentally it helped me that I felt like, I could have stayed there for as long as it took to get through."
Hantuchova's only career title came at the Pacific Life Open five years ago, when she shocked Martina Hingis in the final. The 23-year-old believes the best is yet to come.
"I feel like before, even though I had great results, it was too much up and down," she said before her sixth career final. "I was never really stable. But now I know what it takes to win big tournaments, to have great wins."
More from rediff