The Swiss took an enthralling opening set 7-3 in a tie-break to take the early lead, but then suffered his only blip in the match when Nadal was able to roar back and take the second set only losing one game.
But Federer would not be denied in pursuit of his ninth title at SW19 as he took the third set 6-3 in majestic fashion to leave the third seed furious with his own game in response.
Nadal refused to let the 37-year-old close out the match comfortably and he had to hold his composure to serve out for 6-4 in the fourth set.
Federer will now take on world number one Djokovic in another hotly-anticipated encounter on Sunday as both players look to add to their incredible tallies of triumphs at the famous venue.
60 Second Pro: Federer reveals the secrets of the slice backhand
Neither player got a look-in on their opponent’s serve in the early stages until Federer brought up the first break point in the eighth game, but he could only find the net after a cagey 21-shot rally.
Nadal dug deep to hold, and in the tie-break that followed the Spaniard found the corner to win a remarkable opening point and go the mini-break up.
Roger Federer (R) of Switzerland shakes hands with Rafael Nadal of Spain after their Men's Singles semi-final match during Day eleven of The Championships
Image credit: Getty Images
Federer hit back immediately, however, turning the breaker on its head and winning five straight points to go one set up after 51 minutes.
After a first set featuring just one break point, both players were forced to save two apiece in the opening stages of the second set as the shackles came off, and Nadal went on to break Federer to love in the fourth game.
Nadal carried that momentum with him and broke again two games later before serving out the set and levelling the match up after almost 90 minutes on court.
The stats on Federer’s first-serve percentage dropped as the error-count increased in that second set, while Nadal had visibly dropped back on the Swiss’ serve to improve his own returning.
The battle continued in the third set, and it was Federer who broke first in the fourth game before then saving three break points the game after.
Federer missed two chances to go a double-break up, but that did not matter, as in the ninth game he served out to love to move within a set of the final.
Against expectations, Federer continued to win the baseline exchanges and lengthy rallies, breaking in the third game to edge ever closer to Sunday’s showpiece.
Federer brought up two match points on Nadal’s serve, but the Spaniard saved both to force his opponent to serve it out for the match.
The tensest, most thrilling of games followed, and after Federer fluffed a smash, Nadal squandered a break-back point. Then on match point No 3, Nadal prolonged the tie with a majestic forehand, and then again on match point No 4 with a brilliant backhand.
But it was lucky No 5 for Federer after Nadal sent a backhand long, and two years on from his last Wimbledon win, he had the chance to dream again of lifting what would be a 21st Grand Slam.