The Colombia international netted twice before the Brazilian playmaker put the match to bed in the closing stages of the game to heap more misery on the visitors
Radamel Falcao gave the hosts the lead in the opening 45 minutes, before adding a second from the spot after the break. Brazilian playmaker Diego then made it three in the 80th minute.
Diego Simeone's hosts would have fancied their chances before kick-off due to the dreadful form of the Yellow Submarine, who despite starting the season in the Champions League, look set for a relegation battle in the second half of the campaign under new coach Jose Molina.
And indeed it was the home side that had all the chances to break the deadlock in the opening stages of the encounter, but Diego Lopez stood tall between the posts to keep the away side in the contest.
The Spain international made inspired blocks from Falcao and Diego in the first half, the second a superb save from a header.
However, it was only a matter of time before his goal, one that has been under severe pressure all season, was breached.
Simeone's men deservedly grabbed the lead after 40 minutes, when Adrian set up fellow attacker Falcao and the Colombian this time had no trouble finding the net from close range.
The hosts continued to dominate after the opener and Falcao made it two for the Madrid side after the break when he converted a spot kick. Gonzalo had made a rash challenge on the former Porto attacker, and he dusted himself down to effectively put the game beyond Villarreal.
The Yellow Submarine, in truth, are a shadow of the side that performed so impressively last season, and although they did their utmost to peg one back, they failed to really trouble Thibaut Courtois.
Diego put the match to bed in the 80th minute after an assist from Filipe, slotting home neatly as the visiting defence allowed him to drift through.
The capital club could have made the victory all the more emphatic, had Eduardo Salvio and Gabi converted late chances, but their work for the day was done, and Simeone could celebrate a confident victory.
Atletico have climbed to 10th spot in the Primera Division table following their triumph, and they meet Real Sociedad on January 21 in their next game.
Villarreal, menwhile, remain 18th in La Liga with only 16 points from 18 games. Their next match is away versus Sporting Gijon on January 23, as wins start to become a real necessity for the Madrigal outfit.