The Azzuri, who were seen as a dark horse in the tournament, has seen off one of the favourites in Belgium after goals from Barella and Insigne handed Mancini's men a statement victory.
When Lorenzo Insigne's cross was headed in at the back post by Leonardo Bonucci in the 13th minute, Italy thought they'd grabbed the lead, but the goal was disallowed for offside after a VAR check.
Belgium had a chance to score when Kevin De Bruyne launched a stinging left-footed shot, but it was saved by Italy goalkeeper Gianluigi Donnarumma.
After squirming free from a clutch of Belgian defenders in the area, Barella struck a fantastic effort into the far corner to give Italy the lead.
With a magnificent goal just before halftime, the Azzurri went 2-0 up, as Insigne curled a superb strike past Courtois and into the top corner.
The drama in the first half didn't end there, as Di Lorenzo gave Belgium a penalty for a foul on Doku.
Romelu Lukaku stepped up and scored a 2-1 victory over Donnarumma.
Lukaku had a great chance to equalize in the second half when he was picked out at the back post by Kevin De Bruyne, but his shot was stopped on the line by Leonardo Spinazzola.
When Spinazzola was unable to divert Insigne's wonderful dink on goal, it was his turn to squander a good chance at the opposite end.
And with 12 minutes of normal time remaining, Spinazzola's night, and maybe his tournament, came to a terrible end when he seemed to twist his ankle while running for the ball and was carried off the field in tears on a stretcher.
With some dangerous movement down the left-wing, Doku tried to force an equaliser for Belgium, but his shot went over the bar, and that proved to be the Red Devils' only chance.
Catch all the match stats here.