Djokovic has defeated Nadal in each of their last seven meetings.
The Serbian will face sixth-seeded Kei Nishikori, who defeated 13th-seeded Dominic Thiem 6-3, 7-5.
Nadal, from Spain, missed five set-point opportunities in the second set to sabotage his chances at the victory as Djokovic didn't waver under the pressure.
"I held my nerves at the clutch moments," Djokovic said afterward. "I dropped my serves very early in the first and second sets and I didn't hold my composure then, but I managed to come back. It's a straight-sets win, but it feels like we played five sets.
"There were many exciting and entertaining points. I think he played high-quality tennis, he tried to step in, tried to play aggressive, but towards the end I was a bit more fortunate. I must be very pleased with the way I handled myself in the important moments today."
Second-seeded Andy Murray of Great Britain also landed a spot in the semifinals with a 6-1, 7-5 victory over 12th-seeded David Goffin of Belgium.
It marks the first time since 2011 that Murray has reached the semis of this event.
Murray disposed of Goffin in one hour, 34 minutes but had some service issues and was less than enthralled with the playing conditions.
"The conditions are extremely difficult," Murray said after his match. "The wind is swirling and changing direction in between points. Also there's no clay on the court either.
"Sometimes when they put clay on in between games it's slow, but two points later it's all blown off and it's like playing on a hard court. It was obviously difficult, challenging and frustrating conditions. It's difficult to play great tennis."
Murray will face seventh-seeded Lucas Pouille of France in the semis. Pouille advanced as a lucky loser when Argentina's Juan Monaco withdrew because of a hip issue.
Williams committed just 13 unforced errors while overwhelming Kuznetsova in perhaps her best performance of the year.
"On clay, for sure," Williams said afterward. "I think I played really well in Australia. I just didn't come through. I didn't win that one. But throughout the tournament I played well here. This is probably the best match I have played since then."
Williams will face Romania's Irina-Camelia Begu in the semis. Begu posted a 6-2, 7-6 (3) victory over Japan's Misaki Doi in her quarterfinal match.
Third-seeded Garbine Muguruza of Spain and unseeded American Madison Keys will meet in the other semifinal.
The 22-year-old Muguruza advanced with a 7-5, 6-2 victory over Switzerland's Timea Bacsinszky. Muguruza has reached the Italian Open semis for the first time in her career.
Keys was a 6-4, 4-6, 6-3 winner over Barbora Strycova of the Czech Republic.