Atletico Madrid remained on course for a surprise La Liga title triumph when Raul Garcia's header secured a 1-0 victory for the leaders at home to Villarreal as closest rivals Barcelona and Real Madrid also won.
Atletico were missing top scorer Diego Costa through injury but dispatched seventh-placed Villarreal with an efficient performance in front of their boisterous fans.
Garcia nodded in a Koke corner in the 14th minute at a packed Calderon and the home side comfortably soaked up sustained Villarreal pressure in the second half.
Barca struggle through
Barca were well short of their best at the Nou Camp against a Betis side who showed impressive fight despite being eight points adrift at the bottom of the league.
Messi scored his first of the game from the penalty spot in the 15th minute after Betis defender Jordi Figueras brought down Alexis Sanchez.
Barca were fortunate to go 2-0 ahead when Figueras deflected the ball into his own net in the 67th.
Betis set Barca nerves jangling two minutes later when they hit back through substitute Ruben Castro before Messi netted his second four minutes from time after defender Antonio Amaya handled in the area and the referee awarded another penalty.
Real too good
Real were without the injured Ronaldo in San Sebastian and it took them until the 45th minute to open the scoring when Illarramendi stabbed in the rebound from a Karim Benzema effort.
Bale, who needed treatment on a gashed knee just before his goal, made it 2-0 in the 67th when he controlled a miscued clearance by Sociedad goalkeeper Claudio Bravo and lashed the ball into the bottom corner.
Centre back Pepe netted Real's third in the 85th and substitute Alvaro Morata made it 4-0 two minutes from time.
Not since Real and Barca finished tied on 76 points in 2006-07, with Real crowned champions by virtue of a superior head-to-head record, and Sevilla stayed in the hunt down to the wire has there been such a close three-way fight for the title.