|Ronaldo's double put him two goals ahead of Barca's Lionel Messi in the scoring charts [AFP]
Cristiano Ronaldo struck his 18th and 19th Spanish Primera Division goals of the season as Real Madrid hung on to win 3-2 at city rivals Getafe and haul leaders Barcelona back to a two-point lead at the top.
But Real coach Jose Mourinho was less than impressed with his players, saying he "didn't like them much" after Monday's performance.
Portugal forward Ronaldo struck in each half either side of a Mesut Ozil effort to keep Real hard on the heels of champions Barca, who had stretched their lead to five with Sunday's 2-1 home win over promoted Levante.
Real coach Jose Mourinho gave midfielder Kaka a run-out in the final 15 minutes for the Brazil playmaker's first appearance this season following post-World Cup knee surgery.
They had taken an 11th-minute lead at the Coliseum when Angel Di Maria went to ground in the penalty area and Ronaldo blasted the spot kick past Getafe keeper Jordi Codina.
Di Maria played Ozil through for Real's second in the 19th before Dani Parejo dribbled past Alvaro Arbeloa and Lassana Diarra and lashed a shot past Real's Iker Casillas 10 minutes later.
Ronaldo looked to have made the game safe 12 minutes into the second half with a smart finish from Karim Benzema's pass, which put him two goals clear of Barca forward Lionel Messi on the La Liga scoring charts.
However, the dismissal of Real defender Arbeloa in the 82nd minute for a second yellow card lifted the home side.
Substitute Juan Albin hammered home a loose ball in the 85th to give Getafe hope but they were unable to find the equaliser.
Real have 44 points from 17 matches, behind Barca on 46, while Villarreal stay third on 36 after they beat Almeria 2-0 in the earlier kickoff.
Mourinho was unusually critical of his players at his post-match news conference, saying they had lacked their usual focus in defence.
"Usually we are much more concentrated, much more compact and we gave our opponent a lot of space," the Portuguese said.
"My team needs to defend better and I didn't like them much today."
In Monday's earlier kickoffs, Jose Catala and Borja Valero grabbed the goals as Villarreal cemented their grip on third, while Atletico Madrid missed the chance to climb above Espanyol into fifth when they were held 0-0 at home by Racing Santander.
Atletico are sixth with 27 points from 17 matches, one behind Espanyol who lost 2-1 at fourth-placed Valencia on Sunday.
A late goal from midfielder Braulio snatched a 2-1 triumph for Real Zaragoza over visiting Real Sociedad that lifted them off the bottom of the table into 18th, level on 13 points with 19th-placed Almeria.
Real Mallorca were 3-0 winners at home to Hercules and are ninth.