The three-horse race for the La Liga title tightened on Sunday when leaders Real Madrid drew 2-2 at city rivals Atletico and Barcelona won 4-1 at home to Almeria.
Real needed a Cristiano Ronaldo goal eight minutes from time to rescue a point at Atletico's Calderon stadium in a typically feisty Madrid derby, before Lionel Messi became only the third player to reach 230 La Liga goals in Barca's victory at the Nou Camp.
Barca appeared to be cruising after Alexis Sanchez opened the scoring in the ninth minute and Messi curled in a long-range free kick in the 24th. It put Messi only four short of former Real forward Hugo Sanchez, who is second on the all-time list, and closer to record marksman Telmo Zarra on 251.
Barca dominated possession as usual but one of their weaknesses this season has been defending set pieces and Almeria pulled a goal back when Angel Trujillo headed in from a corner in the 26th minute. Almeria did well to keep Barca at bay until seven minutes from time when Messi headed against the bar at a corner and captain Carles Puyol volleyed in the rebound and Xavi bent in a fourth in the 89th.
Villarreal and Real Sociedad lost ground on fourth-placed Athletic Bilbao, who won 4-0 at home to Granada on Friday and are six points clear in Spain's fourth and final Champions League qualification berth.