Sevilla defender Jules Kounde gave the visitors an early lead only for an Iago Aspas double to quickly put the hosts in charge. Sevilla's Fernando equalised later in the first half before Brais Mendez restored Celta's lead.
Ivan Rakitic pulled Julen Lopetegui's side level on the hour-mark before substitute Papu Gomez snatched the winner in the 76th minute.
A fourth win in five league games took fourth-placed Sevilla on to 61 points after 30 games, six behind leaders Atletico Madrid. Celta are 10th on 37 points.
Sevilla, who beat Atletico 1-0 last week, went ahead in the seventh minute with a towering header from Kounde but soon lost their lead when the French defender fouled Santi Mina in the area and Aspas levelled from the penalty spot.
Aspas struck again three minutes later to complete a quick counterattack but Fernando levelled for Sevilla in the 35th with a shot that took a heavy deflection off Celta's Joseph Aidoo.
Spanish forward Mendez put Celta back in front with a marvellous goal, winning the ball back from Rakitic with a hefty tackle then surging into the area to control a through ball from Denis Suarez before coolly lobbing keeper Bono from inside the box.
Rakitic got his own back by appearing unmarked in the box to slot Sevilla's equaliser.
Lopetegui then threw on three substitutes including Gomez in search of a win and the move paid off when the Argentine chased down Celta's Aidoo and curled the ball high into the net just before he stepped into the area.