Barcelona, Spain (SportsNetwork.com) - Lionel Messi's second-half strike proved to be the difference on Sunday as Barcelona was pushed all the way by Villarreal, but came away with a hard-fought 3-2 victory at the Camp Nou.

The Catalan giants entered Sunday riding a wave of excellent form in the midst of a seven-match winning streak across all competitions, but things started poorly in front of the home fans as Villarreal grabbed the opening salvo.

With the clock ticking just past 30 minutes the visitors took the lead with a some good fortune as a strike from Mario Gaspar hit the outstretched leg of Denis Cheryshev and wound up in behind Barcelona goalkeeper Claudio Bravo.

But the hosts found the equalizer on the stroke of halftime when Rafinha let one go from the right side of the box that forced Villarreal goalkeeper Sergio Asenjo to make a diving stop, but he left a huge rebound and Neymar was in perfect position to smash it home.

Villarreal took the lead again in the 52nd minute as a mistake at the back from Gerard Pique allowed Giovani dos Santos to run to the end line on the right flank unimpeded before cutting it back to Luciano Dario Vietto, who fired it home.

Falling behind for a second time seemed to bring the quality out of Barcelona as just two minutes later Rafinha made it 2-2 thanks to an exceptional layoff pass from former Liverpool man Luis Suarez.

The winning strike came just moments later as again Suarez played provider as he collected the ball at the top of the box and slipped as he slid it over to Messi, who unleashed a beautiful, curling right-footed effort that flew into the corner, leaving Asenjo with no chance for a save.

The win sees the Catalans keep pace with rivals Real Madrid, remaining one point behind Los Blancos for the top spot, while Villarreal sits just outside the top-five with 38 points.

Also in La Liga on Sunday, Aritz Aduriz scored on either side of the intermission as Athletic Bilbao claimed a 2-0 win over bottom-of-the-table Levante, while Edgar Antonio Mendez's strike just before the intermission proved decisive as Almeria took all three points with a 1-0 win over Getafe.

Elsewhere, Sevilla came from behind early to claim three points with an exciting 3-2 victory over Espanyol at the Estadio Ramon Sanchez Pizjuan.

The hosts fell behind when Cristian Stuani dispatched a penalty in the 16th minute, but Diogo Figueiras netted an equalizer for Sevilla three minutes before the half-hour mark.

Vitolo struck in the 36th minute to give Sevilla the lead, and the hosts then found themselves playing with an extra man after Espanyol's Francisco Casilla was shown a straight red card by referee Jose Luis Gonzalez just before the break.

Despite playing at a disadvantage, Espanyol found a equalizer with 12 minutes to play through Victor Sanchez Mata and it looked it would be winner, but Iago Aspas buried the winner at the death for his first league goal in a Sevilla shirt.

The win lifted Sevilla to fourth place with 42 points from 20 matches played.