Barcelona - Ten-time Barcelona champion Rafael Nadal took his clay-court streak to 42 consecutive sets won when he battled to 6-0, 7-5 triumph over Martin Klizan on Friday, also moving just one win away from 400 on the surface.
World No 1 Nadal was made to work by Slovakian qualifier Klizan, ranked at 140 and who had knocked out Novak Djokovic in the second round.
Klizan had three set points to take the match to a decider but Nadal, who had been 3-5 down in the second set, battled back for victory on a third match point and will face either Belgium's David Goffin or Spanish compatriot Roberto Bautista Agut for a place in the final.
Should he prevail on Saturday, he would become only the fourth man to win 400 matches on clay.
The 31-year-old remains a long way behind all-time leader Guillermo Vilas of Argentina who won 659 clay-court matches.
Compatriot Manuel Orantes won 502 while Austria's Thomas Muster racked up 422. However, Nadal has lost just 35 times on the dirt surface he has dominated for over a decade.
He is also 56-3 for his career in Barcelona as the 16-time major winner builds up for an assault on an 11th French Open title next month.
His hopes of winning the Barcelona crown also for an 11th time were boosted on Friday when two of his closest rivals, Grigor Dimitrov and Dominic Thiem, were knocked out in the quarter-finals.
Second seed Dimitrov was defeated by fifth-seeded Spaniard Pablo Carreno-Busta 6-3, 7-6 (7/4).
Thiem, the third-seeded Austrian, was stunned by 19-year-old Stefanos Tsitsipas with the fast-rising Greek seeing off the world No 7 6-3, 6-2 in 80 minutes.
World No 63 Tsitsipas won the last 14 points of the match to reach the semi-finals.
It was his second win over a top 10 player following his victory over Goffin in Antwerp last October. He will face Carreno-Busta for a place in the final.
Barcelona Open results on Friday (x denotes seeding):
Rafael Nadal (ESP x1) bt Martin Klizan (SVK) 6-0, 7-5
Stefanos Tsitsipas (GRE) bt Dominic Thiem (AUT x3) 6-3, 6-2
Pablo Carreno-Busta (ESP x5) bt Grigor Dimitrov (BUL x2) 6-3, 7-6 (7/4)