Highlights: Real Sociedad 2-1 Barcelona
Mikel Merino and Alexander Sorloth struck for the visitors, who defended their hold on fourth place, restoring a five-point gap on Villarreal, fifth, in the fight for Champions League qualification.
Earlier, Villarreal snatched a 2-1 win at Girona through Gerard Moreno’s stoppage time strike.
Robert Lewandowski pulled one back late on for Barcelona, who clinched the title last weekend with a thumping 4-2 win at Catalan rivals Espanyol, and were given a guard of honour before the game.
Barcelona’s celebrations in Cornella were disrupted by Espanyol fans’ pitch invasion, but they made up for it after defeat as they lifted their 27th league title.
“Thank you to the staff, the players who have given everything on the pitch,” Xavi said in a speech.
“And to the fans. Without you it would not have been possible. You have been spectacular.
“Those that have filled the stadiums, those that were at the bus parade. It’s given me goosebumps.”
Imanol Alguacil’s La Real fought hard to dampen the celebrations in Catalonia with an impressive victory.
“(Winning here) is something historic for the club, it’s such a tough place to come,” Merino told DAZN after his side’s first La Liga win at Camp Nou since 1991.
“I wasn’t even close to being born last time La Real won here. “We needed to win because behind us they’re coming up strong and we played a great game today.”
– Fast start –
Xavi picked a solid Barcelona line-up despite already wrapping up the title, but they fell behind early on and could not turn the game around.
Jules Kounde carelessly lost the ball in a dangerous area and Sorloth fed Merino, who fired through Marc-Andre ter Stegen’s legs after five minutes.
It was the first goal the German goalkeeper has conceded from open play at Camp Nou in La Liga this season, with the exception of a Ronald Araujo own goal.
Ter Stegen has 25 clean sheets this season and needs one more to match the league record of 26, although it will not be easy if Barcelona defend as casually in their final three matches.
La Real doubled their lead in the second half when Martin Zubimendi tackled Frenkie de Jong to spark a counter-attack.
Takefusa Kubo teed up Sorloth, who fired past Ter Stegen, who has now conceded 15 La Liga goals, three fewer than the record lowest tally of 18 for a 38-match season.
Barcelona captain Sergio Busquets was given a standing ovation as he was substituted in the final stages, in his penultimate home game before he leaves in the summer.
La Liga’s top scorer Lewandowski nodded home his 22nd goal of the campaign to give Real Sociedad a nervy finale but they held on for an important win.
“After winning the title maybe we lacked intensity,” Jordi Alba told DAZN.
“But it’s a day to enjoy ourselves, having a good time with our people.”
After Busquets collected the trophy Xavi was thrown into the air by Barcelona’s players in celebration, before they danced around a banner in the centre circle proclaiming “La Liga is ours, the future too.”
“No one doubt that this is just getting started,” said Busquets in a speech on the pitch.
“Thanks to all the fans because it’s not possible without you. Thanks to the staff for helping us be at our best.”
Real Sociedad’s win was essential after Villarreal piled pressure on them earlier.
Yeremy Pino opened the scoring for the visitors at Girona after being teed up by Nicolas Jackson but David Lopez pegged Villarreal back.
Jackson also set up Moreno’s late strike with a sprint down the left and an inviting cross for the forward to gleefully slam home.
Lazaro Vinicius hit a hat-trick for Almeria as they beat Real Mallorca 3-0 to climb away from danger.
Rubi’s side rose to 13th, four points clear of the relegation zone.
Getafe were held to a 1-1 draw by relegated Elche which leaves them 17th, level on points with Real Valladolid, 18th, who they face on the last weekend of the season.
Athletic Bilbao beat Celta Vigo 2-1 to leave the Galicians 14th, level on points with Almeria and still not completely safe after six defeats in their last seven matches.