Lionel Messi went close to making the breakthrough midway through the half after exchanging passes with Iniesta inside the box, but his shot curled wide of the far post.
Iago Aspas almost gave the visitors the lead against the run of play following a fast counter-attack but his powerful effort was too high to trouble Victor Valdes.
Adriano opened the scoring for Barcelona after a flowing passing move finished with Pedro picking out the full-back at the back post and he had the easy task of finishing from close range.
Celta Vigo carried a constant threat on the break and found an equaliser in the same manner with Mario Bermejo finishing superbly past Valdes.
However, David Villa restored the home side's lead two minutes late by collecting a pass from iniesta before slotting the ball beyond Javi Varas.