Defending champion Novak Djokovic withstood a determined challenge from Roberto Bautista Agut to reach his sixth Wimbledon final.
The world No 1 defeated the 23rd seed 6-2 4-6 6-3 6-2 in two hours and 49 minutes in a gruelling encounter on Centre Court.
Djokovic appeared rattled at times against Bautista Agut, who was playing in his first Grand Slam semi-final, but moved through the gears to break the Spaniard's resistance.
The Serb is through to a 25th Grand Slam final and will face either Roger Federer or Rafael Nadal in Sunday's showpiece.
The match turned on a 45-shot rally in the seventh game of the third set, which Djokovic won to hold serve and stay a break up.
From then on, he took total control as the Spaniard, who had looked calm and confident in his first Grand Slam semi-final, was eventually brushed aside.
"I had to dig deep. It's the semi-finals and Roberto was not overwhelmed," Djokovic, 32, said.
"He played really well. He was managing his nerves in the first set but later on he established himself and started to play better.
I got a bit tight. It was a close opening four or five games of the third set - that's where the match could have gone a different way."
Djokovic will play Roger Federer or Rafael Nadal in the Wimbledon final
Bautista Agut flashed a brilliant return past Djokovic from the first serve of the match but he barely threatened for the rest of the set as his high-risk approach produced too many errors and a provided a straightforward set win for the favourite.
The second was a different story as Bautista Agut dialled back a little and found that he was able to out-duel Djokovic, who was was making uncharacteristic errors on seemingly simple shots.
Bautista Agut snatched a break in the third game and served superbly to back it up, dropping only four points in five successful service games to level the match.
Bautista Agut battled back to win the second set of the match
The Centre Court crowd realised they had a real match on their hands and they were treated to a superb third set. It, and probably the match, hinged on the seventh game as Djokovic, a break to the good, served at 30-40.
The players then played out their remarkable 45-shot rally, with Djokovic ultimately switching the angle of attack and taking the point with a devastating winner.
It was the longest rally officially seen at Wimbledon since records began in 2005 and Djokovic duly served out and stayed on top to take the set.
The champion then took command in the fourth set, cutting out the loose groundstrokes and picking up points with serve-and-volley attacks, and after breaking for a 2-1 lead, he never looked back.
After his victory, Djokovic said: "Regardless of the history and many finals I've played, playing a final at Wimbledon is something different so I'll definitely enjoy that experience," adding that he would be watching as much of the Federer-Nadal match as he could.
"I'm a fan of that match-up as well," he said. "It's one of the most epic rivalries of all time so it's fantastic to see them play today."