Lionel Messi hit his 300th goal in a Barcelona shirt as the runaway leaders of La Liga came from a goal behind to defeat Granada on Saturday. Atletico Madrid and Real Madrid both won on Sunday to maintain second and third place respectively on a weekend when all of the top five were winners.

At Los Carmenes, Granada continued the good form that has seen them climb away from the danger zone when Odion Ighalo exposed Barca’s defensive frailties to register a surprise half-time lead. Messi restored parity with his 300th goal for La Blaugrana before his 301st rubber-stamped the three points with a quarter of an hour remaining.

Atletico Madrid maintained their four-point lead over their city rivals, winning 3-0 at Real Valladolid. Radamel Falcao’s 20th of the season gave Atleti a first-half lead, Diego Costa extended it shortly after the break and Cebolla Rodriguez sealed it in the 90th minute.

Meanwhile, an under-strength Real Madrid team made heavy weather of beating Rayo Vallecano 2-0.  Rookie striker Alvaro Morata scored in the third minute and Sergio Ramos doubled Los Blancos’ advantage in the twelfth. The fiery defender was dismissed on 17 minutes after collecting two yellow cards in the space of 44 seconds, leaving Jose Mourinho’s side to play out the remainder of the match with 10 men.

Malaga and Valencia both won at home to maintain fourth and fifth place respectively. Javier Saviola’s 18th minute strike was enough for Malaga to overcome Athletic Bilbao 1-0 at La Rosaleda, while Valencia defeated Mallorca 2-0 at Mestalla. Gregorio Manzano’s visitors made a difficult task even harder when Tino Costa saw red after half an hour and, after a scoreless first half, goals from Ricardo Costa and Roberto Soldado gave Valencia the points.

Real Sociedad maintained sixth position with a 1-1 draw against Levante at Anoeta in a game highlighted by two penalties and a red card. Carlos Vela’s 17th minute spot-kick for Sociedad was cancelled out by Michel’s on half an hour. The men from Valencia had Nikos Karabelas sent off as the sides shared the points.

There were contrasting fortunes for the two Sevilla sides. Real Betis slipped up at ever-improving Espanyol, for whom Sergio Garcia’s seventh-minute goal was enough, while Sevilla beat Deportivo 3-1 on Friday night to leave the Galicians in a parlous state at the foot of the table. All the goals came in the first half at the Sanchez Pizjuan, with Ivan Rakitic and two from Gary Medel giving Sevilla the advantage and Riki netting for Depor.

Kike Sola’s fourth-minute goal eased Osasuna’s relegation worries as the Pamplona side beat Zaragoza 1-0 but, with Mallorca losing at Valencia and Celta beaten 3-1 at Getafe, daylight is beginning to appear between the bottom three and the rest. Adrian Colunga, Diego Castro and Fede Fernandez were on target for Getafe, with Augusto Fernandez’ first half goal for Celta barely a consolation.