The Argentina international restored parity in impressive fashion to rescue a point for the Catalans after Robinho had scored an early opener at San Siro
The hosts took the lead early in the match with a well-worked move that saw Kaka set-up his Brazilian team-mate Robinho to give Milan an eighth-minute lead.
But Messi, who was making his first start since recovering from a thigh problem, saved a point for the Catalans.
Robinho and Adriano Correia both missed excellent opportunities to secure all three points in the second half, with neither able to force either goalkeeper into action.
Marco Amelia replaced Christian Abbiati in goal for the hosts, while Mario Balotelli was fit enough to take his place on the bench after recovering from thigh problem.
Messi returned to the Barcelona starting line-up after coming on a substitute in Barca's goalless draw with Osasuna at the weekend, although Carles Puyol was rested.
Milan started well and looked threatening with Kaka and Robinho, and the latter opened the scoring in the ninth minute.
The Brazilian pair linked up well on the counter-attack and, when Kaka rolled a perfect pass across the penalty area, Robinho made no mistake as he fired past Victor Valdes.
Barcelona raised their game after being stunned by the former Real Madrid striker's goal and began to control large spells of possession, Messi going close to an equaliser from a free kick before he did level the score midway through the first half.
Messi drifted in off the right to receive a pass from Iniesta, beat his defender and rifle the ball into the bottom corner to give Amelia no chance.
Both sides had chances to take the lead before half-time, but both Philippe Mexes and Alexis Sanchez missed from close range.
The hosts should have retaken the lead seven minutes into the second half only for Robinho to miss when unmarked inside the penalty area.
Milan broke on the counter-attack as Sulley Muntari was released down the left and he delivered an early cross into the penalty area that evaded Gerard Pique and left the Brazilian with the simple task of firing home, but he missed his kick and the ball rolled to safety.
With 20 minutes remaining, Adriano could have scored for the Primera Division side but wasted a fantastic opportunity. The Brazilian was picked out perfectly by Messi, after escaping the attentions of Kaka, but fired wide from close range.
The result leaves Barcelona top of Group H with seven points, two clear of Milan after their opening three matches.