The Catalan club’s spot in next season’s UEFA Champions League was secured earlier in May.
But manager Xavi will be disappointed his side have ended the campaign with just a solitary point from their final two games.
They went behind late in the first half through Alfonso Pedraza’s strike, before Moi Gomez sealed maximum points for Unai Emery’s men in the second half.
The result meant second-placed Barca ended the campaign a whopping 13 points behind champions Real Madrid, while Villarreal finished seventh.
Adama Traore flashed over and Ferran Torres was denied by Geronimo Rulli inside a bright opening 10 minutes for the hosts.
Barca looked the more likely to open the scoring inside the opening half hour.
But all they had to show for their dominance was a Sergio Busquets strike that flew narrowly over the crossbar.
The inability to take advantage of their superiority was punished four minutes before the interval as Alfonso Pedraza latched onto Daniel Parejo’s pass and steered past Marc-Andre ter Stegen.
Villarreal doubled their advantage in the 55th minute when Gomez lashed into the roof of net after cutting out Traore’s dismal attempted clearance.
Frenkie de Jong had an effort ruled out for offside late on as Barca tried in vain to find their way back into the game.
Results and standings in 2021/2022 Spanish Primera Division after final match day fixtures on Sunday: