The Spaniard will face Stefanos Tsitsipas in the last four after the 20-year-old beat Roberto Bautista Agut 7-5, 4-6, 6-4, 7-6 (2) in their last-eight clash.
In the women's draw, Petra Kvitova continued her remarkable run in Melbourne as she beat Australia's Ashleigh Barty in one hour and eight minutes.
Meanwhile, America's Danielle Collins came back from a set down to beat Anastasia Pavlyuchenkov 2-6, 7-5, 6-1.
Men's Singles Results
(14) Stefanos Tsitsipas bt. (22) Roberto Bautista Agut 7-5, 4-6, 6-4, 7-6 (2)
(2) Rafael Nadal bt. Frances Tiafoe 6-3, 6-4, 6-2
Women's Singles Results
Danielle Collins bt. Anastasia Pavlyuchenkova 2-6, 7-5, 6-1
(8) Petra Kvitova bt. (15) Ashleigh Barty 6-1, 6-4
Full results and draws can be found at the Australian Open's official website.
Nadal was at his brilliant best against Tiafoe and barely gave the American a sniff in the 107 minutes they were on court.
He conceded only two break points in the match—at 2-1 ahead when his remarkable run of 19 points won behind his first serve finally ended.
The Spaniard took control of each set by breaking Tiafoe at the first opportunity, meaning the 21-year-old was on the back foot from the off.
On this kind of form, only a sublime performance will stop Nadal going all the way in Melbourne:
Tsitsipas became the youngest Grand Slam semi-finalist in over a decade with his win against Bautista Agut:
He also ended the Spaniard's unbeaten record in 2019, but it was far from plain sailing for the Greek youngster.
Tsitsipas was broken in the opening game of the match as he started sluggishly.
But he found his range with ball in hand as he served three aces to hold for 3-2, and then he broke for 4-4 and to win the set 7-5.
It was a similar story in the third after Agut had levelled the match. The no. 22 seed took the first break of the set to go 3-2 ahead, but consecutive breaks late on saw Tsitsipas into a 2-1 lead.
And at the end of a tight fourth set in which the pair gave up just one break point between them, the world No. 15 dominated the tiebreak to advance to the last four.
Kvitova's victory was as clinical as they come.
She broke Barty early for 3-0 and again for 5-1 before wrapping up the set in less than half an hour.
The home favourite improved significantly in the second set, proving much stronger on her own serve and starting to cause problems when Kvitova had the ball in hand.
She could not take either of the break points she earned in the second set, though, whereas Kvitova pounced to break for 5-4 and duly served out for the win.
It was a deserved victory for the Czech, who hit 25 winners to Barty's eight in the match.
Kvitova has yet to drop a set so far at the 2019 Australian Open and has not been on court for longer than 69 minutes in a match.
She should be very fresh to take on Collins in their semi-final.
The American, meanwhile, was out on court for two hours, 16 minutes on Tuesday against Pavlyuchenkova.
She was comprehensively outplayed in the opening set as she was broken three times, and a similar start against Kvitova would not be ideal.
However, Collins proved her resilience with an impressive fight back to a set all, and then she breezed to victory with two breaks of her own in the decider.