After Real Madrid beat Getafe, Barcelona knew they had to beat the Galicians to head into next Sunday's Clasico as league leaders, but Celta did not make it easy for them.
With Barcelona clutching a narrow advantage, the visitors came close to an equaliser at Camp Nou and Marc-Andre ter Stegen earned a sixth consecutive domestic clean sheet with a brilliant save from Iago Aspas late on.
Goncalo Paciencia hit the post in stoppage time with the Catalans on the ropes, begging for the whistle.
"We had a great second half, with four, or five, or six clear chances, but if you don't score at Camp Nou then it's normal that you lose," Aspas told DAZN. "They ended up wasting time on throw-ins."
It was the kind of performance which does not bode well for Barcelona's crucial Champions League clash with Inter Milan on Wednesday.
"Playing like we did in the second half it will be very hard (to beat Inter), but in the first half yes, we have to maintain that level," said Barca coach Xavi Hernandez.
"Today we had the luck of having a great goalkeeper, but we have to improve, we have to be self-critical."
Xavi started left-back Marcos Alonso in central defence, alongside Gerard Pique, partly due to injury problems, but otherwise picked his strongest side available.
"UEFA is a mafia," chanted a sector of Barcelona fans, after president Joan Laporta advocated for the Super League again at the club members' annual general meeting on Sunday morning, but their focus soon snapped back to the game.
Barcelona missed a slew of early chances, with Ferran Torres unable to reach a tempting cross and having another effort saved by Agustin Marchesin, while the goalkeeper also did well to claw out a rasping drive from Raphinha.
The pressure soon told and Pedri sent Barcelona ahead in the 17th minute, with Celta defender Unai Nunez accidentally teeing up the Spanish midfielder when he tried to cut out Gavi's cross.
Jordi Alba blasted into the side netting and Pedri delighted fans with a burst forward from midfield, as Barcelona continued to dominate.
However Celta started the second half in determined fashion.
Marcos Alonso made a fine block to deny Oscar Rodriguez from close range as the visitors pushed for the equaliser.
- Missed opportunities -
Xavi responded with a triple change, hooking wingers Torres and Raphinha, as well as resting Pedri for the Inter game.
On came Ousmane Dembele, Ansu Fati and Frenkie de Jong, the latter back after injury, but it was still Celta who forged the better openings.
Jorgen Larsen headed home but the goal was disallowed for offside in the build-up against Javi Galan. Ter Stegen made a stunning save to deny Aspas with six minutes remaining from 10 yards out, and Hugo Mallo flashed another effort wide.
Celta substitute Paciencia hit the post from inside the box and former Barca youth player Carles Perez had a shot blocked by a sprawling Barcelona defender.
"If you lower your intensity, above all in the second half, the rival can put you under pressure," warned Xavi. "It's a reality that we have to take on board.
"If we had got the second goal it would have changed the game. Keeping that intensity has to be non-negotiable for the team."
His side clung on for the points, making it seven wins on the spin in La Liga, this one coming far harder than the rest.
"We have to improve, we can't concede so many chances in a game that was more or less under control," added Alonso.
© Agence France-Presse