Madrid looked set for an easy afternoon as Ronaldo opened the scoring from the penalty spot before he headed home a second inside 20 minutes.
However, Carlos Carmona halved Sporting's deficit 10 minutes before half-time and the struggling visitors were handed a huge chance for an unexpected point 12 minutes from time when Nacho brought down Victor Rodriguez.
Yet, Cop sent his penalty high and wide as Real held on amidst a torrential downpour to extend their unbeaten run to 31 games in all competitions.
Sevilla leapfrogged Barca into second with a 2-1 win over relegation-threatened Valencia.
However, Barca can cut the gap back to four points on Madrid and retake second place with a first win at Real Sociedad in nine years on Sunday.
Barca also host Real Madrid in the first Clasico of the season between Spanish football's two giants at the Camp Nou next weekend.
"It is a game for us to forget because things didn't go as we would have liked," said Madrid boss Zinedine Zidane.
"We lacked a little bit of everything, but we are happy to get the three points which is the most important thing."
Fresh from netting a hat-trick against Atletico Madrid last weekend, Ronaldo continued his return to scoring form with a quickfire double to move ahead of Lionel Messi and Luis Suarez as La Liga's top scorer.
The opener arrived on five minutes when Lucas Vazquez was naively chopped down by Sergio Alvarez and Ronaldo emphatically converted the resulting spot-kick.
The Portuguese's second finish was even more impressive as he buried Nacho's cross from the left with a powerful header that left Diego Marino no chance in the Sporting goal.
In between times Ronaldo had also headed wastefully wide when unmarked from a corner, while Marino parried another fierce effort as the three-time World Player of the Year chased his 40th hat-trick for Madrid.
Instead, it was Sporting who halved the arrears before half-time when a rare misplaced pass from Luka Modric allowed Isma Lopez to cross from the left and Carmona's outstretched leg prodded the ball past Navas.
In deteriorating conditions caused by the torrential rain, Madrid struggled to get going after the break.
Zidane withdrew captain Sergio Ramos with an eye on the Clasico next Saturday with the Spanish international a yellow card away from missing that game through suspension.
However, that decision nearly backfired as Nacho moved into central defence and quickly brought down Sporting substitute Victor Rodriguez inside the area.
Real Madrid beat Sporting to consolidate top spot while Malaga edge Depor in a 7-goal thriller