Andy Roddick will play Cyril Saulnier in the final of the SAP Open in San Jose on Sunday.
The American top seed and defending champion overcame Germany's Tommy Haas, the third seed, 7-6 (7-3) 6-3.
"I was feeling horrible earlier in the week," Roddick said. "I thought tonight was a step in the right direction."
Saulnier battled to a 6-7 (3-7) 6-3 6-3 win over seventh seed Jurgen Melzer, who twisted his ankle early in the second set.
Roddick won the last four points of the first-set tie-break before being broken at the start of the second set.
But he broke straight back and then broke Haas again to lead 4-2.
"It's extremely frustrating when you have chances against a top-five player and don't do anything with them," admitted Haas.
"I rushed a few backhands and he took advantage."
Saulnier will move into the world's top 50 for the first time after his passage through to the final.
"It's taken a lot of work and a lot of fighting in my mind," he revealed.
"Sometimes I didn't believe I could get to a final and now I am here. I've stayed mentally strong.
"I'm on the way. I'll keep fighting and work a lot and I'll be up there."