Aslan Karatsev claimed his first top-five victim with a 7-5 4-6 6-4 win at the Serbia Open over world number one Novak Djokovic.
The 27-year-old Russian saved 23 of 28 break points against his opponent, whose brother organised the event.
Karatsev and Djokovic pushed one another all the way in a match that took three hours and 26 minutes to conclude.
'Image not the best' - Nadal criticises Djokovic for 'strange' racket smash tantrum
- Rafa Nadal reaches Barcelona Open final with win over Pablo Carreno Busta
- Barty enjoys birthday comeback over Svitolina to reach Stuttgart final
- Sabalenka downs Halep to reach Stuttgart final against Barty
The number three seed will face one of Matteo Berrettini or Taro Daniel in Sunday’s final, who play in the day’s second semi-final.
Djokovic praised Karatsev after what he said was a forgettable evening.
"Hats off to Karatsev, he was bold and deserved to win," Djokovic told an online news conference.
"I will probably not be able to recollect all the memorable rallies in this match because I lost. I am not happy with my performance, I put up a fight but he delivered great shots every time he needed to.
"I was unlucky at times, it all came down to one or two shots but I had too many ups and downs throughout the match."
Karatsev said: "This is definitely the most important victory of my career. At the Australian Open in Melbourne I felt like I was playing against a wall but this is a different surface and I was focused."
'Evans defeat one of the worst I can remember' - Djokovic
ATP Washington, DC
Djokovic can still complete the Grand Slam, says Nadal
'Dominant' - Emotional Zverev claims emphatic singles gold