Espanyol were leading the match 1-0 courtesy of Ferran Coro's 20th-minute goal when a flare landed in an area of the Estadio Olimpico de Montjuic occupied by home supporters, triggering angry scenes that threatened to spill onto the pitch.

The incident, which took place midway through the second half, forced the referee to order the players off the pitch. Play resumed around 10 minutes later after order had been restored in the stands.

Espanyol had been playing with 10 men since the controversial dismissal of Nene for an elbow on the stroke of half-time, and the pressure finally told after 84 minutes when Thierry Henry levelled.

A frantic finale might have seen either side claim the three points but in the end it was Pep Guardiola's troops who snatched the win when Samuel Eto'o was felled in the box deep into injury time and Messi fired home the resulting spot-kick.

The win lifts Barcelona up to third in the standings on 10 points, three more than Espanyol who sit eighth.

Villarreal stay on top of the Primera Liga and Sporting Gijon remain bottom after Manuel Pellegrini's side secured a narrow victory against the promoted outfit.

Giuseppe Rossi scored the only goal of the game somewhat against the run of play after 64 minutes in a match which Sporting had largely dominated.

Sporting came into the match hoping to win their first points of the season, but the northerners were extremely low on confidence after conceding 17 goals in their last three matches.

A stoppage-time strike from Ruud van Nistelrooy gave Real Madrid a dramatic 2-1 victory over Real Betis after both teams were reduced to 10 men.

Another former Manchester United player, Gabriel Heinze, had given Madrid the lead but the visitors' night turned bleak when Sergio Garcia equalised and Marcelo was sent off.

But Garcia was himself red-carded, after notching his first goal for the club, and Van Nistelrooy stole the points to ensure Madrid's fourth successive win.