Safarova will face No. 4 Nadia Petrova of Russia in Sunday's final.
"I tried to put her under pressure on every point," the 20-year-old Safarova said after the biggest win in her career. "It's amazing. I'm so happy to win today. With every match you win, you're stronger mentally. I'm not really nervous on court right now."
Henin was playing in her first tournament of the year.
Petrova pulled off a surprise of her own Saturday by rallying to beat home favorite and second-seeded Amelie Mauresmo, 5-7, 6-4, 7-6 (9-7).
"It's a great win, especially since I wasn't feeling 100 percent," Petrova said.
Petrova and Safarova have met twice previously, with Petrova winning handily both times.
Sunday's winner will earn $88,265.
Wisconsin business offering 'therapeutic cuddling' forced to close
Exploding whale video goes viral on Internet