Nadal, a three-time runner-up on the Miami hardcourts, will play seventh seed Tomas Berdych for a place in Sunday's final after the Czech eased into the last four with 6-4 7-6 (3) win over Ukraine's Alexandr Dolgopolov. (Agencies)
The other semi-final will see world number two Novak Djokovic take on Japan's Kei Nishikori, who has already beaten fourth seed David Ferrer and 17-time grand slam winner Roger Federer.
Nadal's resume includes 62 career titles, including two this year but the Miami trophy has consistently eluded the 13-time grand slam winner.
The Spaniard, however, has been in brilliant form in Miami appearing determined to correct that oversight.
"It's a very important victory for me. Very hard to play against these kind of players and especially when the match didn't start the way that you would like," said Nadal.
"When you start losing opportunities, you feel that you are going to be in trouble, because one game he going to play aggressive and you will be in his hands, and the next thing is that game arrived,” he said.
"I was lucky at the beginning of the second set I started with a break and was very important for me. I felt that I finished the match playing better," he added.
Raonic's booming serve, that included a couple at 140-mph plus, kept Nadal on his heels in the opening set but it was the world number one's own serve that let him down when he double faulted on break point at 5-4 down to gift the 12th seeded Canadian the set.
It marked the first time Nadal's serve had been broken in Miami and the unhappy Spaniard struck back by breaking Raonic twice to surge to a 4-0 lead in the second on the way to leveling the match.
Nadal, a three-time runner-up on the Miami hardcourts, will play seventh seed Tomas Berdych for a place in Sunday's final after the Czech eased into the last four with 6-4 7-6 (3) win over Ukraine's Alexandr Dolgopolov.