Rafael Nadal overcame an early scare to reach his 11th Barcelona Open final with a straight sets win over Belgium's David Goffin.
Nadal was broken in the opening game of the match but responded in style by reeling off 12 of the final 14 games for a 6-4 6-0 win in one hour and 22 minutes.
Victory also meant Nadal becomes just the fourth player in the Open era to win 400 matches on clay.
Nadal told atpworldtour.com: "I think I played my best match of the tournament so far. It was a great first set - both of us played to a very high level."
Nadal will face Greek 19-year-old Stefanos Tsitsipas in the final after he continued his superb form to beat Spain's Pablo Carreno-Busta 7-5 6-3 in the other semi-final.
Nadal added: "Stefanos is a great player - the youngsters always have something special and he's playing with confidence, so I need to be ready to play at the highest level possible."
Italian lucky loser Marco Cecchinato reached his first ATP final with a 5-7 7-6 (7/4) 6-3 win over compatriot Andreas Seppi in Budapest.
Cecchinato, who was beaten in the last round of qualifying six days ago, trailed Seppi by a set and 4-2 in the tie-break, but dominated a final set in which he lost only three points on serve.
Cecchinato will face either former finalist Aljaz Bedene or John Millman in the final on Sunday.
The pair will resume their semi-final on Sunday morning with the match tied at 6-2 6-7 (7/3) when it was postponed on Saturday evening due to bad light.