Atletico Madrid`s faint hopes of catching Barcelona were dealt a major blow after a 2-1 defeat at Villarreal in La Liga on Sunday.
Atletico took the lead thanks to a penalty which was converted by Antoine Griezmann in the 20th minute.
However, two goals in the final nine minutes from substitute Enes Unal secured the victory for Villarreal and left Atletico 11 points adrift of Barca.
Atletico tempers boiled over in stoppage time and Vitolo was sent off after clashing with Nicola Sansone.
In the early kick-off, Sevilla were surprise 2-1 losers at Leganes.
The side who eliminated Manchester United from the Champions League in midweek fell behind to goals from Unai Bustinza and Javier Eraso.
Sevilla lost midfielder Pablo Sarabia to a red card before Miguel Layun hit their consolation in the 90th minute.
Messi took his tally for the season to 38 with a fine finish from the edge of the penalty area.
Paco Alcacer had already put the hosts ahead at the Nou Camp, and the leaders went on to canter to a routine victory against a Bilbao side grateful they were not more soundly beaten.
Elsewhere, bottom side Malaga picked up a rare point in a goalless draw at Celta Vigo.