Four-time champions Italy had qualified for Brazil 2014 with two games to spare but four days after a 2-2 draw away to Denmark, Cesare Prandelli's men looked to be heading for a first Group B defeat until Balotelli's late leveller.
Although Italy finished unbeaten, their failure to finish with a win could affect their seeding for the tournament -- a prospect which coach Cesare Prandelli said was "not a concern".
"It was important to qualify and to see some new players. At the Euros we were not among the seeds," Prandelli, speaking to Rai1, said referring to Italy's final appearance at the Euro 2012.
Armenia, who were battling for a possible runner-up finish, started brightly and took a shock lead at the San Paolo.
Two minutes after pouncing on a mistake by Davide Astori, Armenia striker Yura Movsisyan intercepted an Alberto Aquilani back pass towards Astori to run through on goal and beat number two Italy 'keeper Federico Marchetti.
Alessandro Florenzi levelled for the hosts when he found a gap in the Armenia defence to coolly head Lorenzo Insigne's cross from the left past Roman Berezovskiy on 24 minutes.
A largely experimental Italy were creating plenty up front, but leaving gaping holes at the back.
Marchetti was given warning again when Henrikh Mkhitaryan burst past Juventus defender Leonardo Bonucci only to send his effort across the face of goal and the Italy keeper then had to smothered Aras Ozbiliz's effort.
Insigne was the first Napoli player to represent Italy at the Serie A club's home ground in 23 years and came close to capping that achievement with a stunning goal at the end of the half.
He left his marker behind with a cool backheel flick which he drove towards the far post, only for his effort to go just wide, then saw a spectacular volley go just off target.
Balotelli replaced Pablo Osvaldo ten minutes after the restart and did well to set up Insigne, with Berezovskiy parrying the Napoli forward's effort.
Italy's defence finally collapsed in the 70th minute when Henrikh Mkhitaryan powered a header past Marchetti and saw the ball bounce off the crossbar and goalline to give Armenia a 2-1 lead.
Prandelli replaced Aquilani with Giuseppe Rossi on 70 minutes to hand the Fiorentina striker his first cap since October 2011.
Minutes later Balotelli turned on Andrea Pirlo's weighted pass from midfield to beat Berezovskiy and hand Italy a lifeline.
Balotelli sent a rasping drive just wide of the Berezovskiy's goal on 82 minutes and had the ball in the net minutes later after heading home Insigne's cross, only for it to be chalked off for an infringement moments earlier.
In the final minute of injury time Balotelli had the fans on their feet when he held off several defenders on a long run into the area, only to see his angled shot go under Berezovskiy and inches past the keeper's far post.