Neymar struck twice as the won 3-1 at the El Madrigal to reach the final 6-2 on aggregate.
Barca opened the scoring early on as Neymar scooped the ball over home goalkeeper Sergio Asenjo from close-range to put his side 1-0 up on the night.
Jonathan dos Santos equalised for the hosts as he got on the end of Jaume Costa's cross to net at the far post five minutes before the break, but they lost Tomas Pina to a straight red card midway through the second half following his two-footed lunge on Neymar.
Uruguay international Luis Suarez added a solo goal for Barca after 73 minutes as he picked the ball up on a run outside the 18-yard box and beat Asenjo before slotting into the bottom corner from close range, while Neymar added the gloss as he headed home from the six-yard box with less than two minutes remaining.
"We didn't want a back and forth match that was out of control," said Barca coach Luis Enrique.
"The pressured us even after our first goal and they had two or three good chances in the first half besides their goal. Villarreal were in it until we made it 2-1.
"We knew it was going to be tough; Villarreal are one of the best teams in the league."