© Getty Images
Garcia put the home side ahead after less than a quarter of an hour, heading in from a Koke corner following a bright start by Atletico.
The striker came close to adding a second shortly after, but could not find the target for a first-half brace.
Manu Trigueros had the best opportunity of the first half for the visitors, but chances remained scarce for Villarreal in the opening 45 minutes.
Mario sent a shot just wide a couple of minutes into the second half as Villarreal continued to look for an equaliser, before David Villa forced a save at the other end of the pitch.
Atletico started to come back into the match as the second half progressed, as Garcia tried to turn the ball in from another corner for his second of the game, but was denied by a Sergio Asenjo save.
Perbet tried to create one final chance for the visitors in the last minute of the match, but his well-placed cross into the box failed to find any of his teammates.
The result leaves Atletico at the top of the La Liga table, while Villarreal remain seventh.