Perbet and Manu Trigueros scored early in the second half to give the Yellow Submarine a deserved 2-0 lead and the Frenchman's second crowned a dominant display, despite Oriol Riera's late consolation.
The win leaves fifth-placed Villarreal three points behind Athletic Bilbao in the race for the final Champions League place, while Osasuna are two points above the relegation zone in 16th.
Ikechukwu Uche headed Manu Trigueros' early corner over and then fired in a left-foot shot from 20 yards which was held by goalkeeper Andres Fernandez.
The Nigerian was central to Villarreal's strong start and he was soon in the action again, testing Fernandez with an angled drive.
The keeper also denied Javier Aquino and Moises Gomez, while Osasuna's Jordan Loties forced Sergio Asenjo into his only save of the first half.
The game lost its most dynamic figure when Uche went off injured before the interval.
However, his replacement Perbet made an impact just over a minute into the second half, latching on to Gomez's pass and finishing low past Fernandez.
Gomez shot wide before Trigueros, teed up by Giovani Dos Santos, made it 2-0 with a low drive from 20 yards.
Osasuna were sparked into a response, but both Raoul Loe and Alvaro Cejudo were off target as they were restricted to shots from distance.
Giovani curled wide for Villarreal but they soon had the third, Jonathan Pereira's through-ball allowing Perbet to fire just inside the far post from the corner of the six-yard box.
Emiliano Armenteros missed a good chance to pull a goal back when, following a fluid length-of-the-field passing move, he failed to get enough on his header from Javier Acuna's cross and glanced the ball well wide.
Osasuna finally got on the scoresheet three minutes from the end, Riera at the near post expertly steering home Armenteros' cross, but it counted for little.