A late double from Cristiano Ronaldo put some gloss on a stuttering performance from Real Madrid as they beat Celta Vigo 3-0 to cut the gap at the top of La Liga to five points.

The pressure was on Real with leaders Barcelona and Atletico Madrid having won their first matches of the year. However, with Ronaldo unusually quiet and record signing Gareth Bale only fit enough for the bench Real were frustrated by a Celta side who had several chances to score before Karim Benzema broke the deadlock midway through the second half.

Ronaldo poked in Real's second after 82 minutes and then thumped in his second of the night from substitute Bale's cross for his 400th career goal. "It was not a good performance and we need to learn how to be tighter at the back," Real coach Carlo Ancelotti told a news conference. "We lacked balance as we had a lot of players going forward and were open to the counter-attack."

"Celta defended deeply and it wasn't easy but we should have been more balanced when we pressed." Victory kept Real in pursuit of Barcelona and Atletico Madrid who are on 49 points after beating Elche and Malaga respectively. Real survived an early scare when keeper Diego Lopez was forced into an excellent save from Charles after a long ball from Augusto Fernandez had sent him clear of a napping defence.

The hosts dominated possession but they lacked precision and finesse and Celta's rearguard defended doggedly. Benzema had a shot deflected just wide by David Costas and along with speculative strikes from Luka Modric and Angel Di Maria they were all that Real could offer in the first half.

Bale came on during the second half to inject some life into Real's attack but it was Charles who again came close for Celta, firing wide with only Lopez to beat. It was another substitute, Jese Rodriguez, who crafted the opener with a cross that Benzema slid home from close range.

Ronaldo then came alive, pouncing to convert from Daniel Carvajal's pass. Then, in stoppage time, he combined with Bale to give the final scoreline a flattering look. Elsewhere, Ikechuwku Uche scored a hat-trick and Jeremy Perbet struck twice as Villarreal piled the pressure on relegation-threatened Rayo Vallecano with a 5-2 away win that took them up to sixth in the table on 31 points.

Nery Castillo pulled two goals back, the second from the penalty spot after Uche fouled Roberto Trashorras, but it was a sorry night for Rayo who are in 19th place and three points from safety. "We all worked hard and it made it easier scoring early on. The plan was to be solid and wait for our chances to come which is what happened," Uche told reporters.