Karim Benzema had given Madrid an early lead at the Bernabeu before Hazard found the net, for the first time since his £89million move from Chelsea, in first-half stoppage time.
Real got off the perfect start as Benzema put them ahead with just two minutes gone.
Gareth Bale’s cross from the right picked out the France international at the back post and Benzema fired home first time into the net from close range.
Dani Carvajal then saw Silva turn away his effort, with Madrid threatening to extend their advantage.
Puertas saw another effort drift wide before at the other end the hosts finally extended their advantage in first-half stoppage time.
Federico Valverde poked the ball through to Hazard and he took one touch to control the ball before lifting it over Silva and into the net.
Alphonse Areola was called into action for the first time three minutes after the break when he got down low to save Yangel Herrera’s effort from just outside the box and he then denied Duarte moments later from a similar distance.
Madrid made it 3-0 in the 60th minute when Hazard burst forward down the left and cut back inside onto his right foot before rolling the ball across to Modric, who rifled home a superb right-footed effort from 25 yards.
Granada were given a lifeline with 21 minutes remaining when Carlos Fernandez was brought down in the box by Areola, who was given a yellow card, and Machis converted the resulting penalty.
Silva saved a Ramos header and at the other end Victor Diaz sent a header narrowly wide before Duarte got Granada back to within a goal.
Duarte slid in at the back post to score from close range after Diaz had flicked on Alvaro Vadillo’s corner from the right.
James then wrapped it up in stoppage time with his first Real goal for more than two years.
Odriozola cut the ball back to the onrushing James to fire home on the counter and he then became the ninth player to be booked when he was yellow carded for excessive celebration.