Bruno put Villarreal in front in the 30th minute when he drove the ball into the top corner of the net after good work by Cani.
Giovani Dos Santos made it 2-0 just after half-time with his fourth league goal of the season, poking in a pass from Jonathan Pereira.
Cani was also involved in the third goal as he set up Tomas Pina for an 82nd-minute header.
"They have very fast and direct players," said Granada keeper Roberto, "and showed why they are near the top of the table".
Villarreal have 17 points from eight games, four behind Barcelona and Atletico Madrid who play on Saturday and Sunday respectively at home to Real Valladolid and Celta Vigo.
Real Madrid (16 points) will go back above Villarreal if they triumph at Levante on Saturday.
Osasuna took a first-half lead at Malaga and then spent the second period desperately trying to hang on to their advantage in the face of heavy pressure from the home team.
Oriol Riera grabbed his third league goal of the season in the 23rd minute and the victory lifted Osasuna to third from bottom with six points.
Malaga are 10th on nine points.