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.
Laver Cup
'One of the greatest athletes of all time' - Djokovic admits 'sadness' over Federer retirement
9 HOURS AGO
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

Laver Cup
'Beautiful moments' - Djokovic hails Federer in emotional interview at Laver Cup
9 HOURS AGO
Laver Cup
'Great to see!' - Federer full of praise for imperious Djokovic at changeover
9 HOURS AGO