Prior to the 14th meeting between the two sides, Barcelona had never won in Turin, registering three draws and three defeats.
Dembele’s deflected strike wrong footed Juventus goalkeeper Wojciech Szczesny, though the Bianconeri had three goals ruled out for offside, before Merih Demiral was given his marching orders late on. Messi then stepped up and tucked away a 90th minute penalty to make sure of the three points.
Ronald Koeman’s men started well and almost immediately struck the post through Antoine Griezmann, with Miralem Pjanic also testing Szczesny.
Then Dembele cut in from the right side, onto his stronger left foot, and cracked an effort towards goal, which deflected off Federico Chiesa, looped over Szczesny and landed in the Juventus net.
At the start of the second half, Juventus could barely get the ball from Barcelona, as the Catalans had the Old Lady pinned in their own half, but the Bianconeri thought they had themselves level.
A Chiesa cross was headed away by Frenkie De Jong, but only as far as Juan Cuadrado whose acrobatic effort fell the way of Morata and he side-footed home from close range, but once again it was ruled out for offside.
Griezmann drilled an angled ball just wide, and as the game drew to a close things got worse for Juventus as Demiral was given a second yellow card and subsequently sent off.
The game was put to bed late on when Ansu Fati was brought down by Chiesa and Messi stepped up to double the Blaugrana’s lead.