A brace from Rodrygo ensured Real Madrid were crowned champions of Spain for the 35th time with a 4-0 win at home to Espanyol.
A much-changed Los Blancos side managed to keep their visitors from Barcelona at arm's length and strolled to victory despite only needing a draw to secure the title.
Mariano Diaz had the game's first chance in the third minute when Luka Modric intercepted a stray Espanyol pass from the back, teeing up the Dominican in the process. However, Real's number 24 was slow to react and his shot was blocked by the retreating Sergi Gomez much to the frustration of Modric.
Diaz then struck the post after a well-worked Real Madrid corner saw him meet Casemiro's looping header back across goal, while at the other end, Javier Puado and Raul de Tomas threatened to cause the hosts' makeshift defence problems.
With just over half an hour on the clock, Real Madrid took the lead through a sweet Rodrygo strike. The Brazilian combined with compatriot Marcelo with a neat one-two down the left channel, cutting inside and stroking the ball past former Real goalkeeper Diego Lopez.
Rodrygo doubled the advantage after a lackadaisical Yangel Herrera was dispossessed by Diaz, releasing his 21-year-old teammate to all but seal the title with an easy close-range finish, before Espanyol were denied a penalty after a lengthy VAR check cleared Vazquez of handling the ball in his own area.
After the break, Diaz nearly turned the ball into his own net after a flick-on from De Tomas' free-kick sailed just over the top of Thibaut Courtois' crossbar.
But Real added a third on the break when Eduardo Camavinga led a charge into the Espanyol half, timing his pass to Marco Asensio perfectly and the Spaniard lifted his strike over the onrushing Lopez. Espanyol were incensed that they had not been awarded a penalty for a foul on Aleix Vidal in the build-up, but play continued for nearly another minute afterwards and the goal stood.
Vidal nearly got his revenge but his thunderous near-post effort was well stopped by Courtois before Vazquez cleared Sergi Darder's dink off the line.
A lovely reverse pass from Isco then teed up Vazquez in the other box, but his toe-poke rolled narrowly wide of the post.
Isco took matters into his own hands moments later to notch up Real's fourth, sweeping home from fellow substitute Karim Benzema's cutback. However, Rodrygo was judged to have been blocking Lopez's sightline from an offside position and the goal was chalked off.
A legitimate fourth goal stood when Isco set Vinicius Jr racing away, and his pass back to Benzema was emphatically fired into the roof of the net as Real eased their way to the title.
Real Madrid player ratings vs Espanyol
1. Real Madrid (4-3-3)
GK: Thibaut Courtois - 7/10 - Saved what was thrown his way and commanded his area well.
RB: Lucas Vazquez - 6/10 - A bit ropey at both ends of the field, but it wasn't to his team's detriment today.
CB: Jesus Vallejo - 7/10 - Looked solid on a rare start at the back.
CB: Casemiro - 8/10 - Commanded an unfamiliar backline so well while playing out of position himself.
LB: Marcelo - 7/10 - Struggled to begin with but grew into the game and linked up well with Rodrygo.
CM: Eduardo Camavinga - 8/10 - A mature performance breaking up and spreading play. Pivotal to Real's third and was later shifted to centre-back when Casemiro was subbed.
CM: Luka Modric - 8/10 - Was always trying to create moments of magic in a game where he probably could have played with the handbrake on.
CM: Dani Ceballos - 6/10 - Recycled possession well and wasn't a liability. Could still prove to be a handy rotation option should he stay this summer.
RW: Marco Asensio - 8/10 - Like Modric was consistently looking to create chances. Saw the ball a little less than the Croatian but still made plenty with it.
CF: Mariano Diaz - 7/10 - Sloppy in front of goal but at least he cut out his own sights and set up Rodrygo's second with some quick thinking.
LW: Rodrygo - 9/10 - A strong end to the season in terms of his goalscoring will have Real Madrid fans hoping that he can have a Vinicius Jr style breakout campaign next season.
SUB: Karim Benzema (60' for Diaz) - 8/10 - His usual brilliant self after coming off the bench.
SUB: Isco (60' for Casemiro) - 8/10 - If you needed a reminder that Isco can indeed still play football, here it was - huge thanks to Espanyol for that.
SUB: Toni Kroos (60' for Modric) - 5/10 - Not at his usual level. Tired? Potentially.
SUB: Mario Gila (75' for Camavinga) - 6/10
SUB: Vinicius Jr (75' for Rodrygo) - 7/10