Morata kembali mendapati golnya dianulir pada menit ke-30 lantaran ia lagi-lagi terjebak offside ketika menerima umpan dari Cuadrado.
Lima menit berselang, Dembele mendapati tembakannya ditepis oleh Szczesny dan bola muntah ia kirim ke Antoine Griezmann yang tak mampu melewati hadangan barisan pertahanan Juventus.
Keunggulan Barcelona bertahan hingga turun minum dan pada menit ke-57, untuk ketiga kalinya Morata mendapati golnya dianulir lagi oleh VAR karena offside.
Lima menit jelang bubaran, Juventus dipaksa menyelesaikan pertandingan dengan 10 pemain setelah Merih Demiral menjatuhkan Miralem Pjanic dan menerima kartu kuning kedua.
Situasi timpang dimanfaatkan Barcelona untuk terus menggempur pertahanan tuan rumah, hingga Ansu Fati dijatuhkan oleh Federico Bernardeschi di dalam area terlarang sehingga wasit menunjuk titik putih.
Messi mengeksekusi penalti dengan tenang melesakkan bola ke pojok kiri atas gawang tak memberi kesempatan Szczesny untuk melakukan penyelamatan, demi memastikan kemenangan Barcelona jadi 2-0.
Kemenangan itu membuat Barcelona mantap di puncak klasemen Grup G dengan raihan enam poin penuh, sedangkan Juventus (3) tetap di posisi kedua diuntungkan hasil imbang antara Ferencvaros kontra Dynamo Kiev di laga lain.
Barcelona selanjutnya akan menjamu Dynamo di Camp Nou pekan depan, ketika Juventus bertandang ke markas Ferencvaros.
Susunan pemain:
Juventus (4-2-3-1): Wojciech Szczesny; Juan Cuadrado, Merih Demiral, Leonardo Bonucci, Danilo; Rodrigo Bentancur (Arthur Melo), Adrien Rabiot (Federico Bernardeschi); Dejan Kulusevski (Weston McKennie), Paulo Dybala, Federico Chiesa; Alvaro MorataPelatih: Antonio Pirlo
Barcelona (4-2-3-1): Neto; Sergi Roberto, Ronald Araujo (Sergio Busquets), Clement Lenglet, Jordi Alba; Miralem Pjanic, Frenkie de Jong; Ousmane Dembele (Ansu Fati), Lionel Messi, Pedri (Martin Braithwaite); Antoine Griezmann (Junior Firpo)Pelatih: Ronald Koeman