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.
Handler slams Piers Morgan: 'You're a terrible interviewer'
Beautician charged with giving client fatal silicone butt injection