First-half strikes from Luka Modric and Rodrygo put the visitors in control, and even when Jorge Molina halved the deficit on 71 minutes they rarely looked troubled.
Substitute Alvaro Odriozola restored Real's two-goal advantage after 75 minutes and less than 60 seconds later Karim Benzema made it four after latching onto an error from Granada keeper Rui Silva.
Real moved into second place on 78 points, two behind leaders Atletico Madrid with two games left to play.
Real travel to Athletic Bilbao on Sunday while Atleti host Osasuna on the same day, with all matches kicking off simultaneously.
Should Real fail to beat Bilbao, Atletico will be champions if they overcome Osasuna.