It was Diego Simeone's side sixth consecutive win at the Vicente Calderon and it means they remain just one point behind the champions.
Athletic, meanwhile, went into the game just one point off the fourth Champions League spot but produced another disappointing away display and were reduced to 10 men late on when Erik Moran was sent off.
Visiting coach Ernesto Valverde rested Ander Herrera and Markel Susaeta from the start in favour of a defensive-minded midfield trio of Mikel Rico, Benat and Mikel San Jose.
The cautionary tactics did not have the desired effect, however, as the hosts dominated the game from start to finish and were a constant threat, managing a total of 14 shots.
Bilbao were completely impotent. Their only attempts of the whole game were an early wayward effort from Mikel Balenziaga and a closer, but still off-target, shot from Iker Muniain with 10 minutes remaining.
Atletico had their opponents on the back foot from the off but took their time to create a clear opening.
Their first real chance fell to Costa, who dodged a defender and advanced towards goal at an angle, only to pull his shot just wide of the far post.
Gorka Iraizoz then pulled off a spectacular save to deny Villa from point-blank range and the Spain international later took a shot from just inside the area which curled wide.
But just after the half-hour mark, Villa made it third time lucky.
Juanfran sent a looping cross into the box from the right-hand side which was sent into the air by the Athletic defence.
It dropped into the path of Villa, who volleyed past Iraizoz with the help of a deflection off San Jose.
The Athletic midfielder almost got into more trouble when the ball appeared to hit his arm in the area as he tried to block the ball with his chest, but the referee waved play on.
Atletico need not have worried, because they got their second goal soon enough, on 40 minutes.
Costa powered his way past Moran after receiving a pass from Koke and calmly slotted into the far corner.
Atletico were still dominant after the break, even though they failed to score more.
Villa was presented with a header by an accurate cross from Adrian, but could only direct it at Iraizoz. The striker then received a pass from Costa from outside the area and went for goal again, only to shoot over the bar.
The Brazilian-born forward had another attempt to build on his 12-goal tally for the season but shot over once again.
With 11 minutes remaining, Moran was sent off for receiving his second yellow card inside 16 minutes, the latter a punishment for bringing down Diego Godin.
Atletico were unable to capitalise on the one-man advantage, but by then their work was already done.