Osasuna striker Sergio Leon cancelled out Ronaldo's 24th-minute opener after defender Tano had been carried off with a sickening double leg break while Real defender Danilo was forced off with an injury in the second half.
Isco restored Real's lead in the 62nd minute and Zinedine Zidane's side added a third through Vazquez with the last kick of the game.
Real goalkeeper Keylor Navas produced a string of quality saves to preserve their advantage before Vazquez sealed only a second league win for Real in seven visits to the perennial La Liga strugglers, who are bottom of the table on 10 points.
Real top the standings on 49 points, leap-frogging Barcelona on 48 after the champions thrashed Alaves 6-0 with the help of goals from their 'MSN' trident of Lionel Messi, Neymar and Luis Suarez.
The victory, however, was overshadowed by a horrific ankle injury to right back Aleix Vidal, who has been ruled out for the rest of the season. Zidane's side have two games in hand on Barca as they bid to win the title for the first time since 2012.
[caption id="attachment_46230" align="aligncenter" width="640"]
Real Madrid's Cristiano Ronaldo (C) in action REUTERS
Real withstood early pressure from the hosts thanks to two smart saves from Navas and took the lead against the run of play when Ronaldo ran on to a threaded through ball from Karim Benzema and blasted it through the legs of Salvatore Sirigu.
Osasuna made amends for their earlier misses when Leon beat the offside trap to latch on to a through ball and lift it over Navas with aplomb.
Real again had to lean on their goalkeeper at the start of the second half as Navas repelled a shot from Leon but Zidane's side eventually made the clear gulf in class count.
Benzema raced into the area and although he lost control of the ball, Isco pounced to roll it into the far corner. Osasuna continued to pepper Real's area but as stoppage time was about to elapse Vazquez coolly lifted the ball over Sirigu to make sure of the points.
At Alaves Suarez turned in a cross from Vidal in the 37th minute to give Barca the lead over the Basques, who they will meet in the King's Cup final, and Neymar pounced on an error from goalkeeper Fernando Pacheco in the 40th.
[caption id="attachment_46231" align="aligncenter" width="640"]
Barcelona's Luis Suarez (C) and Neymar (R) celebrate with Lionel Messi after scoring a goal REUTERS
Messi hit the ball under a hapless Pacheco for the third in the 59th minute to complete a full house for the 'MSN' trident, while an own goal by Alexis Ruano, a thumping strike from Ivan Rakitic and a volley by Suarez completed the rout.
The Uruguayan, who was sent off at the end of Tuesday's 1-1 draw with Atletico Madrid which sealed Barca's place in the King's Cup final, moved one goal ahead of Messi at the top of the league's scoring charts with 18 strikes.
Leon 33 Real Madrid 3
Ronaldo 24, Isco 62, Vazquez 90+3
Athletic Club 2
Muniain 71, Aduriz 89 Deportivo Coruna 1
Alaves 0 Barcelona 6
Suarez 37,67, Neymar 40, Messi 59, Alexis 63(og), Rakitic 65
Real Betis 0 Valencia 0
P W D L F A Pts
1 Real Madrid
20 15 4 1 54 18 49
22 14 6 2 61 18 48
21 13 4 4 43 28 43
4 Real Sociedad
22 13 2 7 36 31 41
5 Atletico Madrid
21 11 6 4 36 16 39
21 9 8 4 28 14 35
21 9 5 7 32 29 32
22 8 8 6 30 29 32
10 Celta Vigo
20 9 3 8 31 33 30