Villarreal frustrated Barcelona for long spells, but a red card for Dani Raba in the 60th minute turned the match, and efforts from Suarez and Messi ensured that Ernesto Valverde's side would move five points clear at the top of La Liga.
Barca boss Valverde made six changes to the team that started against Sporting Lisbon in the Champions League during the week.
Villarreal's team, meanwhile, showed five changes from the one that started the 3-1 defeat at Leganes last weekend. Injury-hit goalkeeper Sergio Asenjo made his La Liga return between the sticks, while Jaume Costa and Victor Ruiz returned at the back.
Barcelona came close to making the breakthrough inside the first four minutes when Gerard Pique rose highest to meet a corner from the left, but his header hit the woodwork.
Villarreal had plenty of the ball in the early stages, although the Yellow Submarine were finding it difficult to create opportunities against the joint-best defence in the league.
Soriano had the home side's first opportunity in the 16th minute, but the attacker found Barcelona goalkeeper Ter Stegen in good form, before Asenjo kept out a Messi free kick down the other end of the field.
Barcelona were struggling to create clear opportunities, however, and a Denis Suarez effort which sailed harmlessly over the crossbar summed up what was a largely uneventful first 45 minutes.
Soriano sent another long-range effort wide of the away side's post in the latter stages of the half, before Messi just missed the post with a strike from inside the Villarreal box as the pair went down the tunnel at 0-0.
Paco Alcacer replaced Denis Suarez just before the hour as Barcelona looked for some inspiration, and the Spaniard forced Asenjo into a smart save little over 20 seconds after entering the field. Messi then sent a cross from Alba just wide of the post as Barcelona started to force the issue.
Villarreal were reduced to 10 men on the hour when Raba was handed a straight red card for a studs-up challenge on Busquets. The hosts were incensed with the call, but it was a poor challenge from the 22-year-old.
Alba set up another Messi chance in the 70th minute after breaking down the left, but the Argentine just missed the post as Villarreal continued to come under pressure.
Barcelona eventually made the breakthrough in the 72nd minute when Luis Suarez collected a clever pass from Alcacer before rounding Asenjo and finishing into the back of the net.
Manu Trigueros tested Ter Stegen with a decent strike 15 minutes from time, but Barcelona were having the bulk of the chances, and Luis Suarez just missed the post from a Messi pass in the 80th minute.
Barcelona made sure of the points in the 83rd minute, however, with Messi converting from close range after Busquets had intercepted a poor Ruiz pass in a dangerous position.
Valverde's side have moved five points clear of second-placed Valencia at the summit, while they are once again eight points clear of the reigning champions Real Madrid, who stay down in fourth.
Villarreal (4-4-2): Asenjo; Mario, Alvaro, Ruiz, Costa; Soriano (Rukavina 64'), Rodrigo, Semedo (Castillejo 48'), Trigueros; Raba (red card 60'), Bakambu
Barcelona (4-3-3): Ter Stegen; Roberto, Pique, Vermaelen, Alba; Rakitic, Busquets (Gomes 86'), Paulinho (Vidal 68'); Messi, Suarez, Denis (Alcacer 58')