Lionel Messi kept Barcelona on top of La Liga with a hat-trick in a 5-0 win at Tenerife on Sunday and Real Madrid had kept up the pressure with a 2-0 home win over Real Mallorca.
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 deflecting 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 and defender Ezequiel Luna scored an own goal to complete the rout.
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 side who 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.
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 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, their third consecutive defeat.