Cameron Norrie dug in to beat world number 25 Alexei Popyrin 7-6 (6) 6-4 and reach the semi-finals of the Geneva Open, where he will play Novak Djokovic.
British number three Norrie had come through qualifying and progressed to the last eight after Tomas Machac was forced to retire through injury from their match in the last round.
The 29-year-old recovered from a slow start to produce a gutsy display in ending the hopes of Popyrin, who was the number five seed.
Popyrin forced an early break in game three, with the opening set staying on serve until Norrie broke back in the 10th game when the Australian sent a return into the net.
Both players' serve then faltered in the tie-break, before a double hold from Norrie saw him lead 5-4. Although Popyrin saved a first set point, Norrie came to the net to dispatch a volley and take the opener after just over an hour.
The early exchanges of the second set proved just as close, before Norrie made another crucial break and hold to lead 4-2.
Popyrin, who had beaten British number two Jacob Fearnley in the last round, rallied to come back at 5-4.
Norrie, though, closed out a first match point when Popyrin sent a return long following another length baseline exchange.
"I was a little bit nervous going into the match. It is one of the bigger matches for me in the last year," Norrie said on court after his late-night victory.
"It was very cold and tough conditions, but I managed to play some really tough tennis. I was happy how I found my shots in that second set."

Norrie, into his first semi-final of the season, added: "It has taken a real change in mindset to enjoy things a bit more, stop putting so much expectation on myself and it is nice to find some momentum.
"(I am) into the semis now, so will take that and it doesn't get any easier playing Djokovic tomorrow, so it is another one to enjoy."
Djokovic had earlier celebrated his 38th birthday with a hard-fought 6-4 6-4 victory over Matteo Arnaldi.
The 24-time grand slam winner had suffered early exits on clay in both the Monte Carlo Masters and Madrid Open, where he was beaten by Italian Arnaldi.
Having picked up his first win on clay since the Olympics with victory over Marton Fucsovics in last round, Djokovic soon took control of the first set after an early break.
Arnaldi, though, regrouped for the second, getting a break himself to go 3-1 up after Djokovic sent a return long before smashing his racket on the ground in frustration.
Djokovic then caused a moment of concern when holding his right knee after stretching for a forehand in the fifth game, but quickly recovered before going on to break back in the seventh game before then closing out victory in one hour and 40 minutes.
"I kind of found my optimal state and balance, mentally and emotionally, to be able to play my best tennis when it was most needed," Djokovic said. "Hopefully I can carry that into tomorrow."
Earlier on Thursday, Hubert Hurkacz ended the hopes of top seed Taylor Fritz as the Polish world number 31 came through 6-3 7-6 (5).
Austrian qualifier Sebastian Ofner, ranked outside the top 125, fought back to upset fourth seed Karen Khachanov, winning 4-6 6-4 6-4.
You may also like
Italy's top court rules both same-sex mothers can be recognised on child's birth certificate
UK drivers aged over 70 issued warning over £1,000 fines
'Best' UK supermarket sausages revealed and it's not Aldi, Morrisons or Asda
Chelsea can send five stars to Brighton in Joao Pedro swap deal as 'transfer meeting held'
Walima venue opens for Saptapadi ritual when rain disrupts wedding