Albin Ekdal put the visitors in front in the 38th minute before Bologna's top scorer Marco Di Vaio doubled his team's lead with 21 minutes remaining.
The result allows Bologna to climb to 10th in Serie A, six points clear of the drop zone.
Bari went into the encounter at the San Nicola stadium looking to build on their 1-0 triumph over Lecce in midweek.
That outcome ended a 12-match run in which they had failed to claim a victory.
The hosts had the brighter start and could have gone in front in the 16th minute, but Stefano Okaka's header from Marco Rossi's cross went just wide of the far post.
At the other end, Ekdal served Gaby Mudingayi on the edge of the area and his right-footed strike was met by a fine save from Bari goalkeeper Jean Francois Gillet.
Bologna dominated possession and broke the deadlock shortly after the half-hour mark, when Gaston Ramirez found Ekdal unmarked inside the penalty area and his right-footed strike beat Gillet.
Bari could have equalised before half-time but Vitali Kutuzov's eight-yard shot was kept out by Bologna goalkeeper Emiliano Viviano.
The home side continued to press forward in the second half and might have made it 1-1 in the 64th minute, but Okaka's close-range header from Andrea Masiello's free-kick went wide.
Bologna doubled their lead five minutes later.
Gillet was unable to get a touch on Di Vaio's powerful strike from the heart of the area towards the far post.
The visitors held on without major scares and Di Vaio almost increased his tally with two minutes remaining but his stinging drive from 30 yards was met by a fine save from Gillet.