Pedri scored the winner as Barcelona edged past Celta Vigo to return to the top of La Liga on goal difference.
The 19-year-old reacted quickest to turn home from three yards, after Gavi’s cross from the left was cut out, for his second goal of the season.
It was a disjointed performance from Barca, with Celta pushing after going behind, coming closest when Jorgen Strand Larsen had a header disallowed.
Iago Aspas also saw an effort saved, while Goncalo Paciencia hit a post.
Real Madrid had gone top of the league with a 1-0 win at Getafe on Saturday.
Both sides have won seven and drawn one of their opening eight league games, and face each other in the first El Classico of the season next Sunday (15:15 BST).
Barcelona, who have lost two of their opening three Champions League group games, started strongly with former Manchester City winger Ferran Torres curling wide before summer signings Raphinha and Robert Lewandowski saw efforts saved.
Xavi’s side lacked cohesion and quality for large parts of the game, while Celta improved after going behind but failed to show a clinical edge in the final third to earn a deserved point.
Barcelona have now only conceded one goal in the league so far this season and have kept four clean sheets in four home games.
- 1ter Stegen
- 28BaldeSubstituted forRobertoat 77′minutes
- 18AlbaBooked at 71minsSubstituted forGarcíaat 86′minutes
- 30Páez Gavira
- 5BusquetsBooked at 85mins
- 8GonzálezSubstituted forde Jongat 63′minutes
- 22RaphinhaSubstituted forDembéléat 64′minutes
- 11TorresSubstituted forFati Vieiraat 63′minutes
- 10Fati Vieira
- 21de Jong
- 26Peña Sotorres
- 2MalloSubstituted forMinguezaat 90+3′minutes
- 15AidooBooked at 70mins
- 4NúñezBooked at 61mins
- 17Galán Gil
- 8Beltrán Peinado
- 11CerviSubstituted forMendes Paciênciaat 84′minutes
- 28VeigaSubstituted forSolariat 75′minutes
- 5RodríguezBooked at 71mins
- 18Strand LarsenSubstituted forPérezat 75′minutes
- 10Iago AspasBooked at 90mins
- 9Mendes Paciência
- 23de la Torre
- José Luis Munuera Montero
Match ends, Barcelona 1, Celta Vigo 0.
Iago Aspas (Celta Vigo) is shown the yellow card.
Second Half ends, Barcelona 1, Celta Vigo 0.
Offside, Celta Vigo. Augusto Solari tries a through ball, but Carles Pérez is caught offside.
Foul by Ousmane Dembélé (Barcelona).
Javi Galán (Celta Vigo) wins a free kick in the defensive half.
Offside, Celta Vigo. Óscar Rodríguez tries a through ball, but Iago Aspas is caught offside.
Attempt saved. Unai Núñez (Celta Vigo) header from the centre of the box is saved in the top centre of the goal. Assisted by Óscar Rodríguez.
Substitution, Celta Vigo. Óscar Mingueza replaces Hugo Mallo.
Foul by Robert Lewandowski (Barcelona).
Carles Pérez (Celta Vigo) wins a free kick in the attacking half.
Attempt blocked. Gonçalo Paciência (Celta Vigo) right footed shot from outside the box is blocked. Assisted by Carles Pérez.
Attempt saved. Hugo Mallo (Celta Vigo) header from the right side of the box is saved in the bottom right corner.
Attempt blocked. Óscar Rodríguez (Celta Vigo) right footed shot from the centre of the box is blocked.
Foul by Marcos Alonso (Barcelona).
Hugo Mallo (Celta Vigo) wins a free kick on the right wing.
Substitution, Barcelona. Eric García replaces Jordi Alba.
Sergio Busquets (Barcelona) is shown the yellow card for a bad foul.
Foul by Sergio Busquets (Barcelona).
Gonçalo Paciência (Celta Vigo) wins a free kick in the defensive half.