Aside from the second set, the affair was nip-and-tuck, with Nadal just edging out his great rival on the important points.
The Swiss took an early lead in the Rod Laver Arena, snatching the first break of serve after completing his service match in one minute. The 30-year-old continued to execute powerful forehand shots to take a 4-1 lead in the first set and outplay his Spanish opponent.
Despite a three-game advantage, Nadal managed to find his feet and rattle Federer with a number of impressive shots to draw level on 4-4 and eventually force a tie-break in the opening set.
The tie-break could have gone either way, with both competitors playing stunning shots to clinch the first set. However, it was Federer that snatched the advantage to take the lead in the match.
The 16-time Grand Slam champion then managed to break Nadal in his first service game of the second set, but the 24-year-old responded by immediately breaking back and drawing level.
Nadal went from strength to strength and managed to grab the second set convincingly 6-2. The two competitors were neck and neck at the start of the third set, both desperate to get the breakthrough and take the lead.
A tie-break was needed to decide the third and Nadal raced into a 6-1 lead before Federer saved four set points. The Spaniard eventually broke through with his final set point when Federer carved into the net.
The opening exchanges of the fourth were again tight with both men convincing on serve. Federer applied pressure to Nadal's serve in the eighth game but was unable to convert before Nadal set up break point in the next with a trademark forehand pass.
Federer pulled his backhand wide on break point and Nadal went on to serve out the set and match.
Read Sports Mole's live, game-by-game coverage of the encounter here.
All of the top four men's seeds have made it to the semis and Nadal will face either Novak Djokovic or Andy Murray in Sunday morning's final.