Barcelona kept up the pressure on LaLiga leaders Real Madrid ahead of El Classico with a 3-2 win over Real Sociedad at the Nou Camp, where Lionel Messi scored twice.

A last-minute goal from Isco had earlier seen a much-changed Real side battle to a 3-2 victory at Sporting Gijon.

After losing away to Malaga last weekend, Luis Enrique's team - who were also beaten by Juventus in their midweek Champions League quarter-final first leg - could not afford another slip if they were to stay within striking distance of their title rivals.

Barcelona looked to be on course for a routine victory when Messi cracked in the opening goal from 25 yards after 17 minutes, before adding a somewhat fortunate second when the ball rebounded in off his trailing leg.

However, Sociedad, still chasing the European places, reduced the deficit through an own goal by Barcelona defender Samuel Umtiti, but Paco Alcacer quickly restored the advantage for the hosts.

Xabi Prieto's neat finish in stoppage-time, though, did set up a tense second half with Barcelona eventually able to put themselves back into a winning mindset ahead of two key games next week for their ambitions both in Europe and LaLiga.

Real Madrid had to work hard for their victory, with manager Zinedine Zidane having opted to make some nine changes from the midweek Champions League win over Bayern Munich which included resting Gareth Bale and Cristiano Ronaldo.

Croatian forward Duje Cop volleyed Sporting into the lead on 14 minutes, only for Real to hit back quickly when midfielder Isco fired the ball into the top corner.

Mikel Vesga's looping header put the hosts, who started the day five points adrift of safety, back in front at the start of the second half.

Zidane's men, though, where level again just before the hour when Alvaro Morata nodded in at the back post.

Just when it looked like Sporting would hold on for a point, Isco drilled a low shot into the bottom left corner from the edge of the penalty area to keep Real in charge at the top of the table.

Atletico Madrid kept themselves ahead in the battle with Sevilla for third place after a 3-0 win over bottom club Osasuna at the Vicente Calderon, but missed two late penalties.

Coach Diego Simeone opted to leave Antoine Griezmann on the bench, cautious ahead of next week's Champions League quarter-final second leg at Leicester.

Atletico swept into the lead on 30 minutes when Belgian midfielder Yannick Carrasco drove the ball into the bottom corner from the edge of the penalty area.

It was 2-0 just after the start of the second half as Carrasco found the net again as he headed in a cross from Nicolas Gaitan at the far post.

Defender Filipe Luis added a third on the hour when he was picked out in the left side of the penalty area by Angel Correa.

Atletico missed the chance to further extend their advantage in a bizarre finish which saw two penalties missed during the final minutes.

First, Osasuna goalkeeper Salvatore Sirigu brought down Correa, only to save Carrasco's spot-kick with two minutes left.

As the game headed into the 90th minute, the referee again pointed to the spot for handball by Osasuna substitute Miguel De las Cuevas.

Sirigu, though, guessed correctly again, diving to stop Thomas Partey's penalty into the bottom-left corner.

In Saturday's early kick-off, Deportivo La Coruna eased their relegation concerns after beating Malaga 2-0 to record a first victory in five LaLiga games.

Depor had only picked up one point in four matches since stunning Barcelona 2-1 a month ago, but second-half goals from Joselu and Pedro Mosquera helped them see off Malaga.

On loan Stoke forward Joselu opened the scoring two minutes after half-time at the Riazor when he powerfully headed home a left-wing cross.

Substitute Mosquera added a second in the 67th minute with a close-range finish to earn Depor, who started the weekend just six points above the drop zone, a much-needed win.