Julian Alvarez opened the scoring for the Blues, before the hosts hit back through Pierre-Emerick Aubameyang and then went ahead through Frenkie de Jong.
Cole Palmer levelled late on, only for Memphis Depay to put Barca ahead once again, but a late Riyad Mahrez penalty ensured the 92,062 fans got their money’s worth in this high-profile charity fundraiser.
It was the hosts who started brighter and with better finishing, Barca could have been a couple of goals to the good inside the first five minutes.
Pierre-Emerick Aubameyang had a guild-edge chance from close range first and them Kessie saw a strong run end with a shot against the outside of the right-hand post.
With many City players starting their first senior game of the season, it was no surprise that the early passages of play were somewhat disjointed – but it was the Blues who were gifted the lead on 20 minutes.
Sergio Gomez’s looping cross looked an easy take for keeper Iñaki Peña, but he inexplicably dropped the ball at the feet of Julian Alvarez who then tapped into the empty net.
And Cole Palmer had a fine chance to double the lead six minutes later after more sloppy Barcelona defending, but after intercepting the ball on the edge of the box and cutting inside a challenge, he fired over the bar and the chance was gone.
It proved a costly miss as the home side levelled within three minutes as a Raphina free-kick found its way to Aubameyang who volleyed a low shot that squeezed past Ortega Moreno’s near post.
City began the second-half brightly with a strong run from sub Josh Wilson-Esbrand and Alvarez being denied twice in quick succession by Pena within the first couple of minutes.
There was concern for Kalvin Phillips just before the hour-mark as he seemed to aggravate his shoulder after a challenge and was forced to come off as a result.
Barca went ahead on 67 minutes when Kevin De Bruyne’s pass was intercepted on the edge of the City box and Frenkie de Jong profited after Ortega Moreno initially made a good save.
It was end-to-end stuff and Memphis Depay should have given the Catalans the lead on 77 when he was sent clear, only to be denied by a fine Ortega Moreno save.
But the former United man made no mistake not long after, tucking home what would looked to be the decisive goal of the game.
There was further injury concern when Luke Mbete suffered a head injury in the closing moments and had to be stretchered off.
In added time, Erling Haaland appeared to have his ankle clipped as he raced into the box and the referee awarded a penalty.
Mahrez thumped the ball into the top right corner to make it 3-3 on a night when a huge amount of money was raised for the Luzon Foundation and research into amyotrophic lateral sclerosis (ALS), highlighted by former Barca keeper Juan Carlos Unzue who was diagnosed with ALS in 2020.
Concern for Guardiola
It remains to be seen what the extent of both players’ issues are, but it will be a huge concern for Pep Guardiola who already had Aymeric Laporte, Nathan Ake and Jack Grealish absent with various knocks.
The boss is likely to reveal more on all his injured stars at his Friday press conference.
CITY: Ortega, Walker (Stones 46), Gomez (Cancelo 46), Dias (Mbete 65 (Bobb 88)), Phillips (Rodrigo 58), Lewis (Wilson-Esbrand 46), Bernardo (Gundogan 65), Palmer, Foden (De Bruyne 65), Mahrez, Alvarez (Haaland 73)
Subs: Ederson, Carson, Knight
Barca starting XI: Pena, Alba, Pique, Kounde, Sergio (c), Ferran, Kessie, Roberto, De Jong, Raphina, Aubameyang
Subs: Ter-Stegen, Dest, Araujo, Dembele, Lewandowski, Ansu Fati, Memphis, Christensen, Eric, Abde, Balde, Gavi, Pablo Torre, Tenas
MAN OF THE MATCH
Cole Palmer performs with grace and poise wherever he plays, be it away to Swindon Town or in front of 92,000-plus fans at the Camp Nou.
He took his goal with calm assurance and could have another earlier in the game as his reputation continues to grow.
City are next in action on Saturday afternoon, taking on Patrick Vieira’s Crystal Palace in the Premier League.
Kick-off at the Etihad against the Eagles is set for 3pm (BST).
News about Barcelona v Man City
Palmer: I've got to prove myself
Cole Palmer says he was determined to prove he belongs in the first team in Manchester City’s charity game against Barcelona. Watch more
Barcelona 3-3 City: Full-match replay
Watch the entire 90 minutes of Manchester City’s 3-3 draw with Barcelona in a charity game at the Camp Nou. Watch more
Barcelona 3-3 City: Match stats and reaction
Gallery: A great game for a great cause!
City drew 3-3 against Barcelona in a thrilling friendly, with the primary motive to raise money towards aiding ALS (amyotrophic lateral sclerosis) research through the Luzon Foundation. View more
Barca 3-3 City: Short highlights
Brief action from a thrilling friendly at the Camp Nou... Watch more
Barca 3-3 City: Extended highlights
Extended action from a memorable clash at the Camp Nou... Watch more
Pitcam Highlights: Barcelona 3-3 City
As ever, our Pitcam highlights offer a unique angle on proceedings... Watch more
Guardiola: An honour to play charity match
Pep Guardiola thanked fans of both Manchester City and Barcelona for supporting Wednesday night’s charity match at the Camp Nou. Read more
City's friendly with Barcelona raises more than €4 million to aid research into tackling ALS
Official figures have confirmed that City’s charity friendly away to Barcelona earlier this season raised more than €4 million to help fund research into the fight to tackle amyotrophic lateral sclerosis (ALS). Read more