Davide Calabria drilled just wide from the edge of the area, while Santiago Castro and Benjamin Dominguez just failed to get on the end of a ball to the back post.
Instead, Cagliari broke the deadlock when Roberto Piccoli started the move from just inside his own half, surged forward, spread it to the left and was ready to nod in the Tommaso Augello cross from six yards.
The hosts tried to respond, Riccardo Orsolini’s volley charged down and Santiago Castro testing Elia Caprile.
Bologna equalised straight after the restart, as a free kick was cleared to just inside the area where Felice Piccoli went into the back of Niccolò Cambiaghi. Orsolini converted the penalty after a stuttering run-up.
Cagliari goalkeeper Elia Caprile had to make two sensational reaction saves in 30 seconds on Santiago Castro at the near post, then Gabriele Zappa’s glancing header from the resulting corner.
It was only a warning, as Bologna turned the game around when Cambiaghi got down the left and rolled across the face of goal for Orsolini to tap in at the back post relatively undisturbed.
Jhon Lucumi had the ball in the net for 3-1 on 76 minutes, but he was offside on the wayward Calabria volley.