Girona put themselves on course for a famous result when goals either side of half time from Cristhian Stuani turned the game around, but Gerard Pique ensured that Barcelona's two-year unbeaten home record in La Liga remained intact with a header just past the hour mark.
Ernesto Valverde's men were unable to make it five wins from five at the start of the season, though, as Girona held on for their first ever point at Camp Nou.
Girona took the lead early in the corresponding fixture last season and almost stunned in the opening exchanges again when Bernardo Espinosa was left unmarked from a corner in the fifth minute, planting his header straight at Marc-Andre ter Stegen.
The hosts soon took complete control of possession, though, and Messi - who scored a hat-trick in the Champions League on Tuesday night - was the first to come close when he danced past three defenders on his way into the box only to see his measured finish tipped just wide by Yassine Bounou.
The five-time Ballon d'Or winner did offer a reminder of his enduring class on the eve of the FIFA Best awards - for which he has been omitted from the top prize - when he opened the scoring after 19 minutes, firing past the keeper from inside the area after being teed up by Arturo Vidal.
Luis Suarez almost made it two goals in as many minutes moments later when he skipped past his marker but saw his subsequent effort parried away by Bounou.
Suarez turned provider for another Barcelona opening shortly before the half-hour mark when he touched the ball into the path of Ousmane Dembele, but the French winger's long-range shot was tame and easy for the keeper to gather.
Girona were struggling to keep hold of the ball but almost levelled things up against the run of play when Portu latched on to Alex Granell's though-ball before rounding Ter Stegen, only to see his finish blocked on the line by Pique.
The major talking point of the first half arrived 10 minutes before the interval, though, as Lenglet was shown a straight red card after the referee had adjudged him to have purposefully elbowed Pere Pons. The official initially awarded a free kick to Lenglet, but reversed that decision after checking the VAR monitor.
The visitors made their numerical advantage pay right on the stroke of half time too, with Stuani nipping in front of Pique before clipping his finish past Ter Stegen from close range.
Barcelona immediately got themselves back on the front foot at the start of the second half, though, and Arthur drew two routine saves from Bounou either side of a Suarez strike which was deflected wide.
The hosts soon found themselves behind, though, with Stuani scoring a brace for the second game running when he lashed a rebound into the top corner after Portu had seen his initial shot saved by Ter Stegen.
Pique's lack of pace was again exposed during the goal, but the defender would go on to atone for his questionable defending by scoring the equaliser shortly after the hour mark.
It was almost the more familiar goalscoring name of Messi that saved the day, though, as the Argentine rattled the crossbar with a stunning free kick just one minute before the equaliser arrived.
Another Messi free kick spawned the corner from which that equaliser eventually materialised, with Pique climbing above two defenders to nod the ball past Bounou after the keeper's save from a Suarez effort had sent it looping up into the air.
Suddenly it was Barcelona who had the wind in their sails, and it took some last-ditch defending for Girona to stay level as both Suarez and Samuel Umtiti saw shots blocked before they could test the keeper.
Philippe Coutinho came closest to rescuing all three points for the home side late on, first seeing one shot from outside the box comfortably saved by the keeper and then flashing another narrowly wide with just two minutes remaining of normal time.
Barcelona ultimately had to settle for a point, though, leaving them level with Real Madrid after five games of the campaign, while Girona climb into the top six in just their second season of top-flight football.
BARCELONA (4-3-3): Ter Stegen; Semedo, Pique, Lenglet, Alba; Arthur (Coutinho 58'), Busquets, Vidal (Rakitic 58'); Messi, Suarez, Dembele (Umtiti 45')
GIRONA (5-3-2): Bounou; Aday, Espinosa, Alcala, Juanpe, Muniesa; A Garcia (B Garcia 46'), Pons, Granell (Luiz 72'); Portu (Doumbia 85'), Stuani