Kei Nishikori maintained his challenge for a third Barcelona title after battling past Roberto Carballes Baena 6-4 7-5 on Friday.
The world number seven came through a tough contest after one hour and 53 minutes against one of the home favourites to secure a semi-final showdown with Daniil Medvedev.
Nishikori broke in the opening game and saw out a strong opening set after surviving some nervy moments at 5-4.
Carballes Baena showed redoubtable defence in the second, holding onto his serve despite facing eight break points, but he seemed to tweak a muscle in his right thigh when trying to stop a Nishikori backhand and the Japanese claimed the win soon afterwards.
He will face Medvedev in the last four after the Russian dispatched Nicolas Jarry 6-3 6-4.
The seventh seed was in commanding form as he came through blustery conditions and the confidence of an opponent who had already beaten Alexander Zverev and Grigor Dimitrov this week.
“It was dry and windy, so the balls were flying a lot,” Medvedev said. “I needed to win it. I needed to be in the semi-finals. I won it and I’m happy.”
Rafael Nadal reached the last four with a fine 7-5 7-5 win over Jan-Lennard Struff, the 11-time champion securing his passage to the next round with a quite stunning forehand passing shot.
Nadal will face Dominic Thiem next, who was in imperious form to defeat Guido Pella 7-5 6-2, winning nine of the final 11 games.
At the Hungarian Open, qualifier Filip Krajinovic continued his excellent week with a straight-sets win over number two seed Borna Coric.
The world number 105 won 6-4 7-5 to set up a last-four encounter with Pierre-Hugues Herbert, who beat Attila Balazs 6-3 6-4.
Matteo Berrettini will meet Laslo Djere in the other semi-final after respective triumphs over Pablo Cuevas and Nikoloz Basilashvili.