Unai Emery's side's plan was to frustrate their hosts and it worked perfectly. Juan Cala headed the visitors into the lead in the 24th minute from a set piece, and with 19 minutes remaining Carlos Bacca made sure of the points by taking advantage of a defensive error.
Villarreal had been far from their best but were awarded a penalty late on when Jaume Costa was fouled by Cala, and the defender was shown a straight card.
But Marcelino's side were unable to make the most of the six minutes in which they had an extra man and Sevilla held on for the win, recording their fourth victory in five games, and becoming only the second team this season to leave El Madrigal with the three points.
The Yellow Submarine dominated possession and tried to take the initiative early on in the game, but were thwarted by an organised Sevilla side, who took the lead midway through the first half.
Ivan Rakitic launched a free-kick from 40 plus yards into the box and Cala aimed a looping header at goal which sailed over the head of a stranded Sergio Asenjo and into the top corner.
Manu Trigueros tried to respond not long afterwards, shooting towards the bottom corner from just outside the area, but Sevilla goalkeeper Beto was able to get down low and send the ball out for a corner.
Javier Aquino was later presented with a better chance, glancing a free header wide of the near post, failing to take advantage of smart play and a decent cross by Hernan Perez on the left wing.
Sevilla grew in confidence in the second half, while Villarreal wilted.
Bacca hit the crossbar 14 minutes after the restart, and then Rakitic's long rang effort forced a save from Asenjo.
At the other end Trigueros again tested Beto from a free-kick but the goalkeeper was equal to the shot.
Ten minutes later Villarreal appealed for a penalty when the ball appeared to strike the hand of Federico Fazio, although the defender knew little about it.
But only a minute later an error from Mateo Musacchio gifted Sevilla the second goal of the game.
The defender slid to the ground in an attempt to clear a through ball from Rakitic but made a terrible mess of the move and the ball fell behind him and towards Bacca, who pounced on the loose ball and buried it in the net.
Rakitic then could have put the game to bed, but his shot went narrowly over the bar.
Villarreal were handed a lifeline in the 86th minute when Jaume Costa was tripped in the box by Cala and the defender was sent off.
Substitute Jeremy Perbet sent Beto the wrong way from the spot and the hosts had a total of six minutes including stoppage time to find an equaliser, but the closest they came was when Giovani dos Santos tangled with a teammate in the box and failed to get on the end of a cross from Perbet.