The former Arsenal striker opened the scoring with less than six minutes on the clock but the visitors scored twice in the space of five minutes through Rafinha and Alex Lopez to take the lead into half-time.
Luis Enrique's side looked to have the points wrapped up when Rafinha struck again after 57 minutes but Vela pulled one back and the pendulum swung further towards the hosts when Celta midfielder Andreu Fontas was sent off for two bookable offences.
With an extra man and their home fans roaring la Real on, Vela scored two more goals in the space of three minutes to complete the comeback and bring the match to an extraordinary climax.
The win marked Sociedad's third straight home victory in the league and moves them up into sixth in the Primera Division table, while Celta remain level on points with teams in the relegation zone and could find themselves in the bottom three by the end of the weekend.
La Real looked determined to bury the memory of the 5-1 thumping they received at Real Madrid two weeks ago and came out with plenty of intent.
Vela had the ball in the net with four minutes gone but it was harshly ruled out for offside, but Sociedad need not have worried as just two minutes later they did take the lead.
Celta defender Gustavo Cabral tried to bring the ball out of his own area but was dispossessed by Alberto de La Bella.
The ball fell to Antoine Griezmann, who played it down the left hand side of the box before cutting back for Vela to slam into the net, and this time the Mexican would not be denied by the linesman.
Sociedad had two further attempts to double their lead but were pegged back with Celta's first proper attack.
Left-back Jonny swung in a first time cross right onto the head of Rafinha, who glanced past Claudio Bravo to equalise.
Griezmann tested Celta stopper Yoel Rodriguez from a free-kick but then Celta struck again to take the lead through a fantastic triangle move. It began with a pass from the left wing from Nolito to Augusto
Fernandez put Lopez through on goal with one touch and the midfielder sent the ball into the bottom corner.
Sociedad appealed for a penalty early in the second half after the ball appeared to hit a Celta defender on the shoulder, and then were further enraged when a free-kick that was awarded against Xabi Prieto lead to Celta's third.
Neither of three La Real defenders were able to clear a bouncing ball and Rafinha was left alone with the ball to shoot past Bravo.
The hosts did not allow their heads to drop and gave them themselves hope when Vela headed a free-kick from Gonzalo Castro into the net with just less than half an hour remaining.
They grew more optimistic of finding an equaliser when Fontas was sent down the tunnel for receiving his second booking of the game and their hope was rewarded with 12 minutes remaining.
Vela managed to get on the end of a through ball and shoot beyond Bravo and two minutes later the Mexican won the game for Sociedad.
Griezmann chipped the ball over the top and Vela ran on to it, shook off a challenge from Jon Aurtenetxe and drove past Yoel for the fourth and final time.