The Australian Open finalist bageled his British counterpart in a one-sided first set that lasted just 29 minutes.
Edmund, who beat fellow Brit Dan Evans in round one, rallied in the second set and was a break up at 4-2.
However, Nadal drew on his reserves of experience to break back immediately. With Edmund holding his serve, with a 6-5 advantage, Nadal misfired horribly on Edmund's set point to send the match to a decider.
On 2-2 in the third set after Nadal defended an Edmund break point, the Brit went on to lose his serve. Nadal handed him a way back after he was broken immediately after, but Edmund then failed to hold after which Nadal romped to a 6-3 victory in the final set.
Nadal will play Alexander Zverev at the quarter-final stage after he beat Feliciano Lopez in the previous round.