Sevilla got off to a bad start when Mikel Oyarzabal scored for Sociedad in the fourth minute after a pin-point pass from Adnan Januzaj.
Julen Lopetegui's side kept their composure though and levelled in the 18th minute with a half-volley from Nolito, then going ahead early in the second half when Lucas Ocampos dashed into the area from the right and blasted high into the net.
Vazquez the star
Substitute Franco Vazquez effectively sealed the points for Sevilla with a simple finish from close range in the 80th minute.
However, Sociedad struck back seven minutes later through Portu to set up a tense finish to an entertaining game.
"We were so keen to win a game at home, I think the team responded superbly on a very important day for us," Lopetegui said in the post-match press conference.
"To start the game losing 0-1 after what happened at Eibar was very difficult but we equalised quickly and that was vital. I felt nervous at the end when the score was 3-2, but I think we deserved to take the points against an excellent team," he added.
Real Sociedad have been arguably the surprise side of the season so far, having already beaten Atletico Madrid, but Sevilla proved a tough nut to crack for them.
Sociedad coach Imanol Alguacil felt the equaliser changed the momentum in the game.
"The equaliser came very quickly and their second goal caused us a lot of damage but I'm pleased with how we reacted, we managed to strike fear into them," he said.