Dani Alves scored and was sent off and Pierre-Emerick Aubameyang made his debut as Barcelona beat Atletico Madrid in an action-packed game.
Yannick Carrasco gave Atletico the lead from a Luis Suarez pass and Jordi Alba volleyed in from Alves’ ball before Gavi headed in Adama Traore’s cross.
Ronald Araujo scored after Gerard Pique’s header hit the bar and Alves drilled in a Barca fourth.
But Suarez netted to give Atleti hope before Alves saw red for a bad foul.
Barcelona moves above Atletico into fourth place in La Liga.
Barcelona handed starts to three of their winter signings, although two are in their second spells.
Alves, now 38, played for Barca between 2008 and 2016 and has returned on a free transfer. Shortly after Atletico took the lead he crossed for Alba’s wonderful volley.
Traore is on loan from Wolves, having played four times for Barca in 2013 and 2014. He was excellent on his Nou Camp La Liga debut and crossed for Gavi, 17, to put Barcelona ahead.
After Araujo’s goal – technically an assist from Ferran Torres but only because the January signing from Manchester City miscued a scissors-kick – Alves hammered in to make it 4-1.
His first La Liga goal since 2013 makes him Barcelona’s oldest goal scorer ever – and also marks the first time a player under 18 and as old as 38 have scored in the same La Liga game.
He had time for another landmark as he became the first Barca player since at least 2004-05 to score, assist and be sent off in a La Liga game when he stood on the back of Carrasco’s leg.
Suarez had scored to make it 4-2 before that but they never looked like taking advantage of the extra man.
Aubameyang had little impact on his first Barca game since a deadline-day free transfer move from Arsenal because of the red card shortly after he came on.