Mexico international Vela, 27, broke the deadlock from the penalty spot after Gabi had tripped Yuri Berchiche.
Vela was then brought down in the area by Angel Correa which allowed Willian Jose to double the lead.
Atletico are fourth in the table with 21 points from 11 games.
Leaders Real Madrid have 24 points from 10 games and are at home to lowly Leganes on Sunday (11:00 GMT).
Second-placed Barcelona, who have 22 points, are away to third-placed Sevilla on Sunday (19:45 GMT).
Match ends, Real Sociedad 2, Atlético de Madrid 0.
Second Half ends, Real Sociedad 2, Atlético de Madrid 0.
Foul by Asier Illarramendi (Real Sociedad).
Ángel Correa (Atlético de Madrid) wins a free kick in the defensive half.
Attempt blocked. Sergio Canales (Real Sociedad) left footed shot from outside the box is blocked.
Thomas Partey (Atlético de Madrid) is shown the yellow card for a bad foul.
Juanmi (Real Sociedad) wins a free kick in the attacking half.
Foul by Thomas Partey (Atlético de Madrid).
Fernando Torres (Atlético de Madrid) is shown the yellow card for a bad foul.
David Zurutuza (Real Sociedad) wins a free kick in the attacking half.
Foul by Fernando Torres (Atlético de Madrid).
Substitution, Real Sociedad. Juanmi replaces Willian José.
Corner,  Real Sociedad. Conceded by Filipe Luis.
Attempt missed. Yannick Carrasco (Atlético de Madrid) left footed shot from a difficult angle on the left misses to the right.
Attempt saved. Antoine Griezmann (Atlético de Madrid) left footed shot from outside the box is saved in the top left corner. Assisted by Thomas Partey.
Foul by Willian José (Real Sociedad).
Diego Godín (Atlético de Madrid) wins a free kick in the defensive half.
Raúl Navas (Real Sociedad) wins a free kick in the defensive half.
Foul by Diego Godín (Atlético de Madrid).
Corner,  Atlético de Madrid. Conceded by Asier Illarramendi.
Corner,  Atlético de Madrid. Conceded by Raúl Navas.
Foul by David Zurutuza (Real Sociedad).
Ángel Correa (Atlético de Madrid) wins a free kick in the defensive half.
Offside, Atlético de Madrid. Ángel Correa tries a through ball, but Filipe Luis is caught offside.
Substitution, Real Sociedad. David Concha replaces Carlos Vela.
Asier Illarramendi (Real Sociedad) wins a free kick in the defensive half.
Foul by Yannick Carrasco (Atlético de Madrid).
Sergio Canales (Real Sociedad) is shown the yellow card for a bad foul.
Foul by Sergio Canales (Real Sociedad).
Koke (Atlético de Madrid) wins a free kick on the left wing.
Foul by Willian José (Real Sociedad).
Thomas Partey (Atlético de Madrid) wins a free kick in the defensive half.
Attempt missed. Yannick Carrasco (Atlético de Madrid) left footed shot from outside the box is close, but misses to the left. Assisted by Antoine Griezmann.
Goal!  Real Sociedad 2, Atlético de Madrid 0. Willian José (Real Sociedad) converts the penalty with a right footed shot to the centre of the goal.
Penalty Real Sociedad. Carlos Vela draws a foul in the penalty area.
Penalty conceded by Ángel Correa (Atlético de Madrid) after a foul in the penalty area.
Substitution, Real Sociedad. Sergio Canales replaces Xabi Prieto.
Substitution, Atlético de Madrid. Thomas Partey replaces Gabi.
Foul by Asier Illarramendi (Real Sociedad).
Gabi (Atlético de Madrid) wins a free kick in the defensive half.
Atletico Madrid missed a chance to go top of La Liga as former Arsenal forward Carlos Vela inspired Real Sociedad to a third straight league win.