(CNN) -- Sevilla retained third place in Spain as Luis Fabiano netted twice in a pulsating 3-2 win at home to Villarreal.
The result lifted the club to within three points of second-placed Real Madrid, who beat city rivals Atletico on Saturday, and one ahead of Valencia -- who beat Zaragoza 3-1 earlier on Sunday.
Brazil forward Fabiano opened the scoring in the ninth minute after showing great control to bring down a cross by Sergio Sanchez and fire past goalkeeper Diego Lopez, although strike partner Alvaro Negredo appeared to be offside.
Veteran midfielder Robert Pires leveled 20 minutes later with a piece of magic of his own as he volleyed home after a smart one-two with Bruno, and the 36-year-old was also involved as Villarreal took the lead just before the hour mark.
The Frenchman burst free on the counter-attack, and goalkeeper Andres Palop could only block his cross with his legs, allowing David Fuster to drill the ball into the net on his full debut.
But Fabiano equalized a minute or so later with a looping header from a teasing cross by compatriot Adriano, who returned from injury as a substitute.
Fellow replacement Fredi Kanoute, who came on for Negredo at halftime, made it 3-2 with a smart header as the visitors were caught out by Diego Perotti's quickly-taken short corner, which allowed Adriano to again to supply the cross.
Fabiano went off with a minor injury five minutes from time, then Kanoute hit the outside of the post.
Valencia welcomed back captain David Villa from the suspension which saw him miss the 2-2 Europa League draw with Slavia Prague on Thursday, and the Spain striker helped his side to a comfortable home victory.
Villa was clearly offside as David Silva's through-ball went past him, but the referee waved play-on as Juan Mata raced clear to slot in the 17th-minute opener.
Villa made it 2-0 against former club five minutes before halftime as Pablo Hernandez legitimately beat the offside trap and selflessly squared the ball to his teammate.
Hernandez made it 3-0 two minutes later as the visitors again paid for defending too far up the pitch, allowing Villa to return the favor.
Zaragoza pulled a goal back in the 65th minute through Angel Lafita when goalkeeper Cesar Sanchez could only parry Marko Babic's 25-yard effort, and Marko Babic had an effort ruled out for offside three minutes from time.
In Sunday's other games Almeria won 2-0 at home to Osasuna in a mid-table battle, Racing Santander were left hovering above the relegation zone after a 2-0 defeat by visiting Athletic Bilbao, Sporting Gijon moved up to seventh with a 1-0 win over Espanyol and Valladolid were held 0-0 by second-bottom Xerez.