Real Madrid won their final Primera Division match of the season 2-0 at Deportivo La Coruna but had to settle for runners-up spot behind Barcelona.
To claim the title, Real needed to beat Deportivo and Barca to fail to win at Granada.
And with the score still at 0-0 in Andalusia, Zinedine Zidane's men took an early lead at Riazor as Cristiano Ronaldo converted - but Barcelona nerves were soon settled, with them also going in front.
Moments after that, Ronaldo added his second to take him to 35 league goals for the season, then hit the woodwork twice before being substituted at half-time.
Real were less dynamic after the interval but saw out the victory with little trouble, while Barca were confirmed champions for a second successive year after running out 3-0 winners, Luis Suarez - the only man with more league goals than Ronaldo this term - notching a hat-trick to take his tally to 40.
Zidane's side may have fallen just short in the title race they will surely not be too disheartened after finishing a point worse off than Barca.
The gap between the two clubs was 10 points at the start of last month, and having won each of their last 12 league games of the season, Real could hardly be in better shape ahead of the May 28 Champions League final against Atletico Madrid, who they have ensured will finish third in the table.
Real were soon into their stride in Galicia, with it taking only seven minutes for them to go 1-0 up.
The fit-again Gareth Bale cut into the box from the left flank and the ball went from him via Karim Benzema to Ronaldo, who slotted in with ease.
In the 25th minute, three minutes after news filtered through that Barca had taken the lead as well, Real doubled their advantage when Ronaldo met Toni Kroos' corner with a header that went in off Deportivo's Pedro Mosquera.
Alejandro Arribas had gone down in the box after a collision with Bale as the ball came in from the corner, but the goal stood.
Four minutes later, Ronaldo dinked the ball past Stipe Pletikosa but saw it come off the post.
And after teeing up a Benzema strike that brought a smart save out of Pletikosa, the Portuguese was then once again denied a hat-trick by the goalframe, his shot skimming against the top of the crossbar.
Deportivo had their most threatening moment in the 36th minute as Fede Cartabia whipped a shot just wide of Keylor Navas' post.
And with Ronaldo replaced at half-time by James Rodriguez, the hosts continued to get some joy after the break.
Lucas had a shot saved by Navas and one from Sidnei deflected wide off Pepe.
Deportivo substitute Rober was then left unmarked by the Real defence but his header from close range was kept out by Navas.
Real started to pressurise again in the closing stages, with their substitute Isco sending a header wide, Marcelo's drive rebounding off Pletikosa's legs and James shooting wide.