France's Julien Benneteau returns a ball to Swiss player Roger Federer during the quarter-final match of the ATP World Tennis Tournament in Rotterdam.
Benneteau, who has yet to lift a tour title during his 13-year career.
The top seed struggled throughout with his first serve on Friday and was broken three times in the opening set.
Benneteau, 31, broke again early in the second set before the world number two, backed by a capacity crowd of 10 500, broke back.
Federer had chances to break again in the 11th game but world number 39 Benneteau managed to hold him off before clinching victory on his first match point as a backhand pass from the Swiss went out.
"If you lose your serve five times, like I did today, you can't win indoors," Federer told reporters. "Julien played great, created more chances than I did and fully deserved to win.
"I fought back at the end of the second set and had chances to take it into a third but that would have been more luck than I deserved."
Benneteau next meets fellow countryman Gilles Simon who put out Martin Klizan when the Slovakian retired through injury while trailing 6-7 6-3 3-0.
No easy matches
"This is a really good win and I am pleased with the way I played today," said Benneteau.
World number seven Juan Martin Del Potro stayed on course for his second successive appearance in the final by sweeping aside Finn Jarkko Nieminen 6-3 6-4.
The Argentine, beaten in last year's final by Federer, 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.
"There are no easy matches here," said Del Potro. "Nieminen played some excellent forehands on important points and I had to stick to my game plan and be patient."
The 21-year-old Dimitrov looked down and out when he trailed 6-5 in the second set but he then reeled off 18 consecutive points to level the match, including taking the tiebreak 7-0, before going on to reach his final indoor semi-final.
"I can't remember ever scoring 18 straight points before and I didn't even notice it during the match," said the Bulgarian. – Reuters