Roger Federer suffered a surprise 6-3 7-5 defeat to Julien Benneteau in the quarter-finals of the Rotterdam Indoors.
The top seed and defending champion was uncharacteristically out of form with his serve, broken three times in the first set alone.
The 31-year-old Frenchman then broke the Swiss early in the second before Federer broke back to level.
He had three chances to break again in the 11th game but the world No 39 held him off and then clinched victory on his first match point after Federer had set it up with a double fault.
"This was a dream match, and I played like a dream," said Benneteau. "This is for sure my biggest win. He was the favourite, but maybe he played a bit tight.
"I've been playing well all week, improving with each match. I've had a great week here so far and I hope it's not finished."
Benneteau will next face compatriot Gilles Simon, who progressed at the expense of Martin Klizan; the Slovakian retired through injury when trailing 6-7 6-3 3-0.
Meanwhile, Juan Martin Del Potro stayed on course for a second successive final appearance with a 6-3 6-4 victory over Jarkko Nieminen of Finland.
The Argentine will play Grigor Dimitrov in the last four after the Bulgarian came from behind to defeat Cypriot Marcos Baghdatis 6-7 7-6 6-3 in a thriller.
Cypriot Baghdatis took the first-set tie-break after neither player managed to break serve. Both then broke once in the second set before Dimitrov dominated the breaker, not giving Baghdatis a single point.
The talented Dimitrov broke Baghdatis' first service game in the final set to set up his win and leapt over the net to hug Baghdatis once he had booked his spot in the last four.
"Dimitrov has a very good future. He's playing fantastic tennis, the match will be close for both sides," said a wary Del Potro.