Newly crowned Ballon d'Or winner Ronaldo opened the scoring for the hosts after 57 minutes and then played a part in Benzema's goal, which wrapped up the points 19 minutes later.
This was not a vintage performance from Madrid, who were playing their seventh game in January, and they were frustrated for large parts of the game by a tough Granada side who gave them little space to counter-attack until late in the second half.
Carlo Ancelotti's side temporarily move two points clear of Atletico Madrid and Barcelona at the league's summit, and although they could be third again by Sunday, the Italian's aim of "going to sleep on top of the league" was realised.
Valencia and Espanyol shared the spoils in an entertaining game at Mestalla which ended 2-2.
In a frantic start to the game, Jhon Cordoba opened the scoring for the visitors inside three minutes, but Paco Alcacer levelled only four minutes later.
A header from Jonas put Juan Antonio Pizzi's side in front on 32 minutes, but Cordoba won a penalty just before the break, allowing Sergio Garcia to equalise.
The two teams remain as they were before the game in the Primera Division table, with Espanyol one point above Valencia in eighth place.
Real Valladolid gave their survival hopes a welcome boost with a 1-0 win over high-fliers Villarreal.
Jesus Rueda's first-half goal divided the two sides and saw the hosts halt a run of four matches without a win as they look to escape the bottom three.
Defeat also ended a three-match winning streak for Villarreal and serving a small blow to their hopes of claiming a Champions League place.
Levante moved up to eighth following their 3-2 victory away to Sevilla in seventh.
The home side twice took the lead through Coke and Ivan Rakitic but were pegged back soon after each goal by David Barral and then Loukas Vyntra.
However, Rakitic will be rueing his 58th-minute penalty miss as Junior Simao netted Levante's winner deep into the second half to hand his side all three points.
Both sides ended the match with 10 men after Sevilla substitute Jairo Samperio and Levante defender Nikos Karabelas were sent off in the 90th minute.