The visitors seemed set to take all three points when substitute Luciano Vietto clipped home Cani’s pass to open the scoring 11 minutes from time.
However, Suarez slotted home a loose ball inside the area two minutes from time and Bacca converted from the penalty spot deep into stoppage time after Giovani Dos Santos had upended Benoit Tremoulinas.
Victory for Sevilla moves them back above Real Madrid and Valencia with the top four separated by just two points.
And champions Atletico Madrid can also move to within two points of the leaders with victory at Getafe later on Sunday.
Villarreal enjoyed the better of the play in the first period at the Sanchez Pizjuan, but it was Sevilla who came closest to breaking the deadlock when Gerard Deulofeu’s corner came back off the post.
Sevilla ‘keeper Beto was forced to make a point-blank save from Ikechukwu Uche just before the break and the Nigerian striker should have done better when he fired wide 11 minutes into the second-half.
Uche’s replacement Vietto was more clinical when handed the chance to give Villarreal the lead as he raced onto Cani’s through ball to lift the ball over the advancing Beto.
However, Villarreal couldn’t withstand the late waves of Sevilla pressure as Suarez pounced to hook the ball into the far corner following a scramble inside the area.
And Dos Santos then stupidly brought down Tremoulinas as he tried to run the ball out from inside his own area to allow Bacca to seal the three points with his seventh goal of the season.
Earlier, Malaga moved up to seventh with a 4-0 thrashing of Rayo Vallecano, whilst Espanyol and Deportivo la Coruna played out a 0-0 draw- AFP