Andy Murray suffered semi-final heartache in Acapulco after Grigor Dimitrov claimed an epic 4-6 7-6 (7/5) 7-6 (7/3) victory in the early hours of Saturday morning.
Finishing at 2.32am local time, Dimitrov, who had never previously taken a set off Murray, produced one of the performances of his career to reach a third ATP Tour final, where he will face big-serving South African Kevin Anderson.
Murray dropped his opening service game in each of his previous three matches this week, but the boot was on the other foot this time around as he got the immediate break when Dimitrov pulled a forehand wide after a lengthy rally.
And, despite facing three break points, Murray held for a 2-0 lead.
Dimitrov held to get himself on the board and Murray followed suit, before sealing a second break for a commanding first-set advantage.
Some dominant play at the net saw the Bulgarian rally to reach 5-4 but Murray would not be moved on his own serve and duly clinched the opening set - his seventh in a row against Dimitrov.
He took the first game of the second set and, after Murray held, Dimitrov exulted with the crowd after winning an epic rally to go 2-1 up.
From that point on he retained the upper hand. While Murray could seemingly do no wrong on his own serve, Dimitrov was giving absolutely nothing away and the Scot did well to force the tie-break.
However, Dimitrov quickly surged into a 6-1 lead and, despite Murray forcing the breaker back to 6-5, he would surrender his first ever set to the Bulgarian in their third career meeting.
Murray soon found himself down a break in the third set as fatigue began to take its toll.
Dimitrov's dazzling display continued and he built a 4-2 lead before the British number one decided to drop deep in order to rally towards clawing a game back.
Dimitrov then put himself in prime position to meet Anderson by winning the eighth game on the stroke of 2am local time, but Murray promptly held to force his opponent into serving for the match.
The Scot let a break point pass him by when losing a fearsome rally but would level at 5-5 as Dimitrov's nerves led him to make two unforced errors.
The 11th game was an epic tug-of-war that went Murray's way and, having served for the match minutes earlier, Dimitrov was suddenly tasked with serving to stay in the tournament. He held to love.
A visibly frustrated Murray would take the first point but Dimitrov duly powered through the breaker to clinch a dramatic victory over the second seed in just under three hours.
"This has been my hardest match so far, Andy is a great fighter, it was very hard," Dimitrov said. "But there's always one winner and it was my turn today, I'm very happy".
Dimitrov will next face fifth seed Anderson, who booked a place in his second successive final with a 6-1 5-7 6-4 win over Alexandr Dolgopolov.
Anderson lost to Marin Cilic in Delray Beach last week.
"I've been working hard for this", said fifth-seeded Anderson. "I'm very happy to be in an Open 500 final, it's a step forward for me. I want to win it now".