Felix Auger-Aliassime will face Milos Raonic in an all-Canadian Stuttgart Open semi-final after saving a match point in a battling defeat of Dustin Brown.
Brown upset fellow German Alexander Zverev in the second round, but Auger-Aliassime beat the enigmatic qualifier 7-6 (7-3) 6-7 (2-7) 7-6 (7-2) on Friday.
Auger-Aliassime was unable to make his main-draw debut at the French Open due to a groin injury, but has made an encouraging start to the grass-court season.
The 18-year-old broke Brown to level at 5-5 in the final set after saving a match point and won the decisive tie-break, having stormed into a 5-0 lead.
Raonic won 89 per cent of points on his first serve in a 6-4 6-4 defeat of Marton Fucsovics.
Matteo Berrettini and Jan-Lennard Struff will contest the other semi-final following straight-sets defeats of Denis Kudla and Lucas Pouille respectively.
Defending champion Richard Gasquet reached the last four of the Rosmalen Grass Court Championships with a 7-6 (10-8) 6-4 victory over Nicolas Jarry - conqueror of Stefanos Tsitsipas in the second round.
Frenchman Gasquet will now take on Jordan Thompson, who rallied to beat fellow Australian and third seed Alex de Minaur 4-6 6-2 6-3 in 's-Hertogenbosch.
Second seed Borna Coric saw off Cristian Garin 6-7 (4-7) 6-3 7-6 (8-6) to set up a showdown with Adrian Mannarino, who ended David Goffin's title hopes.