Messi added a double in four minutes to kill off the opposition, his first coming when he squeezed past two defenders to power home.
For his second, he latched on to a loose ball to hit home and he almost had three within six minutes when a header went just too high.
Barca were enjoying up to 80 per cent of possession and their passing play paid off on the stroke of halftime when Cesc Fabregas and Jonathen Tello combined to provide for Pedro to finish well.
Barca took their foot off the gas in the second half, perhaps with one eye on the Spanish Super Cup game with Real Madrid on Friday.
However, the introduction of Villa on 75 minutes brought the crowd to its feet and he only had to wait nine minutes to get his reward, finishing off an Andres Iniesta pass.
Real Madrid made a stuttering start to their title defence when they dropped two crucial home points in a 1-1 draw with Valencia yesterday.
Gonzalo Higuain put Real ahead on nine minutes before Jonas Goncalves equalised just before the interval for a plucky Valencia side.
"I expected more from my team. Last season when we drew 0-0, the best player for Valencia was Guaita [the Valencia keeper] and today it has been Alves. We did not play a great game but we did enough to win," said Real boss Jose Mourinho in the Spanish capital.
Athletic Bilbao crashed 5-3 at home to Real Betis, for whom Ruben Castro, Jorge Molina and Benat Extebarria scored first-half goals.
Oscar de Marcos and a Mikel San Jose double levelled the game for Bilbao in a second-half fightback but Betis continued to look dangerous on the break and Alejandro Pozuelo and a second for Molina took the points back to Seville.
Bilbao coach Marcelo Bielsa left out two key members of his squad, Fernando Llorente and Javi Martinez, whose futures at the club remain uncertain.
Also yesterday, Atletico Madrid drew 1-1 at Levante.
- AAP