The fifth-seeded Spaniard, with a display of powerful serving and opportunistic returns, did not face a break point against Fognini and put his opponent’s serve under pressure throughout the 90-minute match.
Nadal raced through the first set in 26 minutes, losing only four points on serve while Fognini made 14 unforced errors.
The Italian came to life in the second set, including a stretch where he erased five break points during his first two service games.
But at 5-5, just when it looked as if Fognini might force a decisive third set, he double faulted and Nadal got his break before sealing the match four points later.
Nadal, who has never won the Miami title, will face the winner of the second semi-final between twice champion Federer, the fourth seed, and the 12th-seeded Australian Nick Kyrgios.
Federer made a stunning return from a six-month injury layoff to win the Australian Open in January, and also beat Nadal in the last 16 at Indian Wells en route to winning a record-tying fifth title there.
Earlier in the early hours yesterday, Federer stared down defeat and saved two match points before knocking Tomas Berdych with a 6-2 3-6 7-6(6) victory in their thrilling quarter-final.
Swiss magician Federer had to call upon all his resources of skill, poise and experience to edge the Czech in a third set tiebreak in front of a frenzied crowd at Crandon Park.
Berdych served for the match at 6-4 in the tiebreak but Federer reeled off four points in a row, including two unplayable serves, and secured the win when the 10th seed crumbled with an awful second serve.
Federer conceded he had rode his luck at times to advance.
“I’ve had some tough losses here where I should have won. They stay with you so I’m happy today to have come through somehow,” he said courtside.
Lucky
“I definitely got very lucky at the end but I think I showed great heart today and I fought. Tomas really stepped it up and it was a great match at the end but one guy had to win.”
Australian Open champion Federer, who also won at Indian Wells two weeks ago, is playing some of the best tennis of his career and appears completely recovered from a knee injury that kept him out of the second half of last year.
The 35-year-old is 17-1 this season, his only loss a surprise defeat to Russian Evgeny Donskoy in Dubai.
Federer has won all seven of the tiebreaks he has faced during his current American campaign.
“I enjoy winning breakers because those are the ones that are going to make you win a tournament or not sometimes,” he said.