Benzema’s opener made Madrid the first club to score 1 000 goals in the European Cup but this was far from a vintage performance from Carlo Ancelotti’s side, who were frequently whistled by the home fans at the Santiago Bernabeu.
Shakhtar struck a deserved equaliser towards the end of a shoddy first half, only for Benzema to score a second for a 2-1 win, with both of his goals set up by the in-form Vinicius Junior.
A second victory over Shakhtar in as many weeks has restored Madrid’s control over group D after the shock defeat by Sheriff in September briefly dragged them into the pack.
Madrid are three points clear of Sheriff and five ahead of Inter Milan, with those two sides facing each other later on Wednesday.
Benzema has now scored 13 goals in 14 appearances for his club this season and the Frenchman seemed sharper for his rest last weekend, when he was left out for the first time in eight months.
The only concern was the 33-year-old appeared to request his substitution late in the second half and then was seen with ice on his groin on the bench.
Luka Modric wiggled through early on and forced a good save after a neat exchange with Lucas Vazquez before Madrid took the lead, Vinicius rewarded for his pressure in the box and able to tee up Benzema for a simple finish.
But the advantage and level of comfort first made Madrid complacent and then sloppy as the intensity dropped to walking pace and mistakes began to creep in.
Alan Patrick hit the post from distance while Fernando was allowed to dribble through the sleeping Madrid midfield and shot wide. Eder Militao turned to his teammates with his arms outstretched.
Madrid were finding it difficult to raise the tempo even as the jeers of the home crowd rang in their ears and Shakhtar grabbed a deserved equaliser before halftime.
Mykola Matvienko clipped the ball towards Alan Patrick and he chested the ball down for Fernando, who arrived just at the right time to smash the finish past Thibaut Courtois.
Shakhtar might even have taken the lead when a misplaced Benzema pass allowed Fernando to skip through again but this time Courtois tipped the shot wide.
Madrid’s performance hardly improved in the second half but a rare moment of attacking quality restored the advantage, as Casemiro’s delightful flick returned the ball to Vinicius, who sidefooted across for Benzema to score a second.
Benzema signalled to Ancelotti and went off to a standing ovation while without him, Madrid had to survive some nervous moments as Taras Stepanenko’s effort fizzed wide before Ismaily’s header floated over.