Argentineren utlignet i det 87. minutt og satte på overtid inn vinnermålet som ga det spanske storlaget 2-1-seier.
Ilsinho sendte hjemmelaget i ledelse da han holdt seg framme i duell med Carles Puyol og sendte ballen forbi Victor Valdes i Barcelona-målet.
Sjakhtar har vunnet bare en av sine ni siste seriekamper i Ukraina, men drømmen om å kopiere seieren mot Barcelona i mesterligaen for fire år siden levde helt til sluttminuttene.
En stor tappe av keeper Pjakov ga Messi sjansen til å utligne.
Hjemmespillerne mente også at Barcelona viste dårlig sportsånd ved å angripe mens en spiller lå nede med skade.
Fire minutter på overtid
I det fjerde tilleggsminuttet, da dommeren gjorde seg klar til å blåse av, dukket Messi opp igjen og ble matchvinner.
Dermed topper Barcelona tabellen med full pott etter to runder.
Sporting Lisboa, som slo Basel 2-0, har i likhet med Sjakhtar tre poeng.