Pablo Sarabia put Sevilla in front after 41 minutes but Carlos Vela levelled before David Zurutuza left Sociedad to play out the final 11 minutes with reduced numbers.
Jorge Sampaoli's side are two points behind third-place Atleti, having played a game more, although fifth-place Villarreal having to travel to Barcelona on Saturday means the Andalusians should have few concerns over closing out a Champions League spot.
Wissam Ben Yedder pounced on some lackadaisical defending from the visitors and slipped a pass to Sarabia for the midfielder to score his 11th goal of the season.
Socieded were level shortly after the hour thanks to more generous defending.
Xabi Prieto drove a hopeful low cross into the six yard box, where Clement Lenglet's clearance ricocheted off Steven N'Zonzi and Vela nipped in to round Sergio Rico and crash high into the net.
Eusebio Sacristan's men finished the game with 10 after Zurutuza collected his second booking in the space of five minutes for a foul on Vitolo.
Sampaoli responded by throwing on Stevan Jovetic and Vicente Iborra in search of a winner but Sociedad held on.