Juan Manuel Cerundolo produced a brilliant comeback in the third set to beat first-seed Casper Ruud at the Swiss Open Gstaad.
Cerundolo won 6-2 1-6 6-3 in two hours and ten minutes to set up a semi-final clash against Peru's Ignacio Buse.
The Argentine player put early pressure on Ruud, breaking his serve twice in the opening three games, before breaking him a third time on his way to securing the first set.
Ruud fought back hard in the second and showed why he was the first seed. He lost just one game as he levelled things going into the deciding set.
Despite Ruud also taking a 3-0 lead in the third, Cerundolo won six games on the bounce to pull off an unexpected win.
"It was pretty tough. He was being much more aggressive than me and he was leading me easily then," said Cerundolo in his on-court interview.
"I think I stuck there mentally, didn’t let the match go and I came out at 0-3 with the wind in my favour. With the help of the wind and maybe some mistakes from him, it was 1-3.
"Then suddenly it was 2-3, and when I was only one break down, I started to feel confident again and battled again more.
"I was more confident, more aggressive, and started hitting harder. I think that was the key to my comeback in the final set."
Meanwhile, second seed Alexander Bublik booked his spot in the semi-finals with a comfortable win over Francisco Comesana.
Bublik won 6-4 6-3, breaking his opponent's serve once in each set to secure the victory in Gstaad while also saving two break points of his own.
Data Debrief: Clay court momentum for Bublik
For the first time in his career, Bublik has won 10 tour-level wins on clay in a single calendar year. He reached the quarter-finals at Roland-Garros before losing to Jannik Sinner.
He could also reach his first-ever ATP Tour final on the surface if he beats Arthur Cazaux or Jerome Kym in the semi-finals.
Cerundolo, meanwhile, picked up the biggest win of his career, by ATP ranking, in defeating world number 13 Ruud.