Leaders Barcelona kept up their relentless pace at the top of La Liga with a 4-0 thrashing of city rivals Espanyol and 10-man Real Madrid needed two goals from Cristiano Ronaldo to see off Real Sociedad 4-3 on Sunday.
Argentina's Lionel Messi, favourite to collect a fourth world player of the year award on Monday, scored 91 goals for club and country in 2012 and started out where he left off with a clinical penalty at the Nou Camp.
A double from Pedro and another from Xavi completed the scoring as the unbeaten Catalans racked up their 17th victory in 18 games to move on to 52 points.
They are 11 points ahead of second-placed Atletico Madrid who were held to a 1-1 draw at Real Mallorca.
Atletico dominated but struggled without suspended top-scorer Radamel Falcao until Raul Garcia bundled in from close range in the 72nd minute but Kevin Garcia grabbed a scrappy equaliser for the hosts three minutes from time.
Champions Real stayed 16 points adrift of Barca in third after a topsy-turvy game at the Bernabeu overshadowed by Jose Mourinho's unpopular decision to drop captain and goalkeeper Iker Casillas to the bench for the second consecutive game.
Reserve keeper Antonio Adan was sent off after only six minutes, however, and Spain's number one came on as a substitute to a huge ovation from home fans, though it was stand-in captain Ronaldo who secured the win with his second-half double.
Barca welcomed coach Tito Vilanova back to the dugout after a throat operation just over two weeks ago and he watched his side destroy Espanyol in the opening half hour at the Nou Camp.
Andres Iniesta crossed low for Xavi to sidefoot home the opener after 10 minutes and Pedro netted his first from a Cesc Fabregas cut-back in the 15th.
The Spain forward scampered away on to a Sergio Busquets through ball in the 27th and dinked his shot over Francisco Casilla for the third and Fabregas went down for a penalty two minutes later.
Messi scored from the spot to rack up his 27th league goal this season and was also denied by the woodwork from a free-kick.
"The best news from today was that we saw Tito back in the dugout," Barca sports director Andoni Zubizarreta told Spanish television, after Vilanova made a quicker than expected return to duties.
Vilanova thanked everyone for their messages of support at a news conference.
"The first half-hour was spectacular," he said. "I didn't come out of the dugout because the team was doing well and my presence [on the touchline] wasn't necessary."
The Bernabeu whistled Mourinho when Adan was named in the starting line-up at the expense of fan favourite Casillas, behind a patched-up defence shorn of the suspended Sergio Ramos and the injured Pepe, Marcelo and Fabio Coentrao.
Real quickly took the lead though when Sami Khedira fed Karim Benzema in the area and the France striker turned to score.
The game had barely settled down when Adan misplaced a pass, raced out to make up for his error, and brought down Carlos Vela for a penalty.
Adan was sent off and Casillas was brought on to chants of "Iker, Iker" from the home fans.
'ONLY A YELLOW'
"It looked like it was a penalty but we had one or two players between him and the goal-line," Mourinho told a news conference.
"To me, if it was in a different stadium it would only have been a yellow card."
Casillas was sent the wrong way from the spot by Xabi Prieto and in a nervous few minutes he almost gave away a second with a poor pass out.
Khedira put Real ahead again in the 35th minute, backheeling Ricardo Carvalho's low shot past Claudio Bravo but Sociedad levelled before the break.
Prieto slotted the ball past Casillas in the 40th and Khedira volleyed wide of an open goal after Benzema's shot came back off the post.
Sociedad's lack of ambition let Real back into the game after the break, Benzema winning a ball in midfield and playing Ronaldo through to score their third in the 68th minute.
The Portugal international thumped a free-kick in off the underside of the bar two minutes later, his 16th goal of the campaign.
Although Prieto completed his hat-trick by pulling one back for the visitors with 14 minutes remaining, their challenge faltered when defender Daniel Estrada was also sent off near the end.