Eleven-times champion Rafael Nadal booked his place in the semi-finals of the Barcelona Open semi-finals by beating German Jan-Lennard Struff 7-5, 7-5 in a hard-fought match on Friday.
The world number two will meet Dominic Thiem in the last four, a re-match of last year's French Open final, after the Austrian overpowered Argentine Guido Pella 7-5, 6-2.
Struff, ranked 51st in the world and a renowned doubles player, had impressed in Barcelona by knocking out 10th seed David Goffin and last year's runner-up Stefanos Tsitsipas and was facing Nadal for the first time in a competitive match.
The Mallorcan broke to take a 3-1 lead with a powerful forehand winner down the line but Struff broke back to make it 4-4.
Nadal broke his opponent for a second time to avoid a tiebreak and take the set.
Neither player gave much away in a finely balanced second set, and Struff saved a break point in the eighth game to keep things finely balanced, but Nadal was saving his best tennis for the 12th game.
Nadal quickly earned three match points and seized the second with a magnificent backhand down the line to end the match in one hour and 43 minutes.
"Me and my coaches knew he (Struff) was going to play aggressively, it was one of those matches where every point counts, he put me under a lot of pressure so I had to play through that but my serve was solid throughout," Nadal said.
"I'm aware that I was facing someone who has beaten Tsitsipas and Goffin this week so I'm very happy that I was able to win."
Nadal won a five-set thriller against Thiem in their last meeting, in the quarter-finals of the 2018 US Open, having beaten him in straight sets in the final at Roland Garros.
Thiem won his last meeting with Nadal on Spanish soil, however, knocking the Spaniard out of last year's Madrid Open in the quarter-finals in straight sets.
Japan's Kei Nishikori also made it into the last four after seeing off Roberto Carballes Baena 6-4, 7-5 and will face Russian Daniil Medvedev, who knocked out Chilean Nicolas Jarry 6-3, 6-4.
Osaka, Kvitova dig deep to advance to Stuttgart semis
World number one Naomi Osaka came from behind in the final set to beat Croatian Donna Vekic 6-3, 4-6, 7-6(4) on Friday and move into the Porsche Tennis Grand Prix semi-finals.
Osaka comfortably won the opening set but was tested by the Croatian, who pushed her to the limit in the second and third. The Japanese made 45 unforced errors as she struggles to get to grips with swapping hard courts for clay.
Osaka was visibly frustrated and trailed 5-1 in the final set but she refused to give up and found her rhythm to break Vekic twice and prevent her from serving for the match.
In the tiebreaker, a confident Osaka upped her baseline game and had two early mini breaks before wrapping up the match in two hours and 18 minutes. An infuriated Vekic even smashed her racket after losing the match.
"I told myself I didn't want to have any regrets here," Osaka said. "I was stressed out when I went down 1-5... but this (comeback) was pretty good because I don't play really well on clay."
Earlier, world number three Petra Kvitova came back from a set down to beat Anastasija Sevastova 2-6, 6-2, 6-3 and move into the tournament's semi-finals for the third time in her career.
Sevastova broke Kvitova twice to take a 3-0 lead as the Czech struggled with her first serve and made a slew of unforced errors.
Kvitova fought back in the second set and won 10 straight points before levelling the match.
Kvitova took command in the final set and broke a visibly upset Sevastova to take a 3-1 lead before easing into the semis.
"In the first set I missed almost everything. I was pretty slow and she just couldn't miss," Kvitova said. "In the second set it was very important for me to stay on my serve and the chance to break her came."
Kvitova will face Kiki Bertens in the semi-finals after the Dutchwoman beat fourth seed Angelique Kerber 6-3, 6-4 in a little over 75 minutes.
Anett Kontaveit also progressed to the semis, where she will face Osaka, after former world number one Victoria Azarenka was forced to retire in the third set of their quarter-final trailing 5-7, 7-5, 3-0.
Azarenka had just come off a Fed Cup semi-final in Australia and had eliminated defending champion Karolina Pliskova in the previous round.