Roberto Martinez's side, which let slip a two-goal lead to lose to France on Friday, was denied twice by the woodwork either side of Barella's volley, which gave the reigning European champions the lead just a minute after the interval.
Berardi then scored from the penalty spot to add a second for Roberto Mancini's team, who had their record 37-game unbeaten run ended by Spain in Thursday's semi-final, before Charles de Ketelaere netted a late consolation.
Italy banished any demons after their first competitive loss on home soil since 1999 while Belgium - having faltered in a Euro 2020 quarter-final against the same opponents - may now have to wait until the 2022 World Cup to inflict revenge.
Federico Chiesa blasted the first chance of the contest narrowly over from a tight angle before a deflected effort from Berardi was parried away by Thibaut Courtois.
Toby Alderweireld's near-post header then forced Gianluigi Donnarumma's first save, but the Italy goalkeeper could only stand and watch as Alexis Saelemaekers curled onto the crossbar moments later.
Barella responded by sending a speculative long-range effort over before Chiesa was excellently denied by Courtois' legs on the stroke of half-time.
Courtois, however, was no match for Barella's right-footed volley straight after the break, the midfielder finding the bottom corner to open the scoring.
Michy Batshuayi almost immediately drew Belgium level, his right-footed drive cannoning into the bar, before Timothy Castagne needlessly fouled Chiesa to concede a penalty, one Berardi converted despite Courtois getting a hand to the effort.
Yannick Carrasco struck the right-hand post and while De Ketelaere did roll through Donnarumma's legs to score, Belgium could were unable to find a late leveller.