Garcia-Lopez has only one career singles title to his name
Guillermo Garcia-Lopez stunned world number one Rafael Nadal 2-6 7-6 6-3 to reach the Thailand Open final.
It looked like being another routine win for Spaniard Nadal, who completed a career Grand Slam at the US Open this month, when he took the opener.
However Garcia-Lopez, ranked 53, won a tie-break against his compatriot to level before prevailing in the decider.
Garcia-Lopez will face Jarkko Nieminen in the final after the Finn beat Germany's Benjamin Becker 6-3 6-2.
"I've never beaten a number one player in the world," reflected Garcia-Lopez. "I think this is the best victory in my career.
"Everything was fantastic. For the moment, I'm a bit shocked."
Garcia-Lopez, a runner-up to Michael Llodra at Eastbourne in June, found his rhythm in the second set, making Nadal work hard with some impressive groundstrokes and bombarding him with flat, wide serves that yielded 10 aces in total.
In the third, he continued to apply the pressure on Nadal, who had plenty of chances to stop the rot, but converted only two of 26 breakpoints.
"I have to blame myself that I didn't play aggressive when I had a chance to break," said a rueful Nadal.
"He served well on break points. I lost chance after chance. He played a great match, especially in the third."
Earlier, the unseeded Nieminen, ranked 60th, took charge against his 65th-ranked opponent and cruised through their match in only 65 minutes in Bangkok.
Nieminen, seeking his second career ATP Tour title, dominated with sharp groundstrokes against Becker and fired 76% of his first serves in.
The Finn has not dropped a set in his run to the final, including wins over seeds Viktor Troicki and Jurgen Melzer.
"I've played great tennis and am just looking forward to the final," said the 29-year-old.