Ronaldo brace sends Real through
The Portugal forward struck from a free-kick and a penalty to sink Lyon and earn his side a fourth successive win in Group D. Lyon played with pride and had their chances, but Ronaldo was the only man able to find the clinical touch in front of goal.
Jimmy Briand was first to test visiting keeper Iker Casillas, while Hugo Lloris held Ronaldo's long-range strike. The France keeper then had to tip over Karim Benzema's effort before Dejan Lovren's block denied Ronaldo. But Real took the lead when Yoann Gourcuff's push on Benzema allowed Ronaldo to find the net with a fierce low free-kick from inside the D.
Xabi Alonso had a trademark effort from his own half, which was sailing wide even before Lloris shooed the goalline official aside to gather the ball.
Briand's deflected strike was saved by Casillas before Lovren again rescued Lyon by blocking Angel Di Maria's shot. But the Croatia defender then injured himself volleying clear after Ronaldo had set up a shooting chance with a delicious piece of trickery but seen a weak wayward effort stabbed away by Mouhamadou Dabo.
Ozil shot feebly at Lloris and Lyon then threatened in first-half stoppage time, with Casillas tipping Gourcuff's effort over after Bafetimbi Gomis sent his team-mate clear. Bakary Kone, Lovren's replacement, headed straight at Casillas early in the second half after he was not flagged offside from Gourcuff's free-kick.
Lloris was then played into trouble by his own defence and had to slide to clear from the onrushing Benzema. The keeper then dived to push an awkward bouncing shot from Ronaldo around his near post and Kone was lucky to escape after handling Ramos' header from the resulting corner.
But another marginal penalty call two minutes later went in Madrid's favour after Ronaldo tangled with Dabo and picked himself up to fire home his landmark goal.
Di Maria's nerve deserted him as he ran clear on Lloris before Lyon went close to pulling a goal back, Briand heading Gourcuff's corner against the bar and Kone nodding another flag-kick from the same player wide.
Substitute Alexandre Lacazette headed Gourcuff's deep cross over and Kim Kallstrom swung a free-kick onto the roof of the net. Briand then poked wide as Casillas advanced, meaning Real preserved their clean sheet.
Ajax's hammering of Dinamo Zagreb means top spot is not yet assured, though the Dutch side - five points behind - face a Lyon side who on tonight's evidence will provide a stern test before taking on Real on matchday six.