Tenerife tonked by Barcelona
Champions Barca, two points clear of Real with 43 from 17 games, had goalkeeper Victor Valdes to thank for setting up their first win of 2010.
Valdes saved three one-on-ones in the early stages - the first deflected on to the crossbar - before Barca found any kind of rhythm in the face of frenetic pressuring from their hosts.
Bojan Krkic, in for the suspended Zlatan Ibrahimovic, set up Messi for the opener in the 36th minute and Carles Puyol headed the second from a Messi free-kick in the 44th.
Messi poked in the third after excellent approach play from Andres Iniesta and Krkic.
The Argentine lobbed the fourth, his 12th of the campaign, from outside the area in the 75th before defender Ezequiel Luna scored an own goal to complete the rout.
"There was only one team in it until the first goal, Tenerife," Barca coach Pep Guardiola told reporters.
"The difference between us was that they didn't make the most of their chances and we did. Valdes was fantastic. After that we dominated a bit more."
Real were quickly in front at a snowy Bernabeu when Gonzalo Higuain cut in from the right flank and curled a shot into the top corner after seven minutes.
With Kaka back in the side after over a month on the sidelines with injury, Real were sharper in every department against a team that had started the weekend in fourth.
Cristiano Ronaldo and Kaka went close but the second goal did not arrive until the 49th when Higuain's cross to the back post was volleyed in by substitute Esteban Granero.
Visiting keeper Dudu Aouate prevented a heavier defeat and the only bad news for Real coach Manuel Pellegrini were injuries to Rafael van der Vaart (muscle) and Xabi Alonso (bruising), who both had to be substituted.
"The scoreline doesn't reflect what I saw on the pitch. We played a good game in every aspect," coach Manuel Pellegrini told reporters.
"We have to make sure of the points at home. We are in a one-on-one with Barcelona and points dropped at home will tell at the end of the season."
Earlier, Valencia cruised to a 3-1 victory at basement club Xerez to strengthen their hold on third place with 35 points.
Ever Banega set up Juan Mata for the opener in the 11th minute but Xerez netted a rare goal when Carlos Calvo scored after a sweeping counter-attack.
David Villa laid on Valencia's second for David Silva in the 33rdand Carlos Marchena charged through the middle in the 69th to make it 3-1 with a spectacular solo effort.
Deportivo La Coruna climbed to fourth on 31 points by beating Osasuna 1-0 at home thanks to a fine turn and shot from Juan Rodriguez just after halftime.
Mallorca slipped down to sixth on 30 points, below Sevilla on goal difference.
Sevilla's wilting title challenge suffered another setback on Saturday when they lost 2-1 at home to Racing Santander,