Bologna started the game well and Thijs Dallinga forced Mile Svilar into the game’s first notable save with his strike from a tight angle in the 10th minute.
The action soon slowed and there was a struggle for either side to create chances as the half went on, although the Rossoblu tried to build up their play while the Giallorossi often looked to counter with Artem Dovbyk and Paulo Dybala linking up nicely at times.
Gianluca Mancini did a particularly good job of halting Bologna’s attackers in the box, while Sam Beukema made a last-ditch intervention to deny Dovbyk after an inventive Leandro Paredes cross.
The two Roma men involved then forced Lukasz Skorupski into an impressive double save moments later as the visitors stepped things up after the half-hour mark, and Dybala was played through after a poor Jhon Lucumi pass but fired harmlessly over. Benjamin Dominguez then hit the side netting at the other end in the first half’s final seconds.
Alexis Saelemaekers opened the scoring in the 58th minute against his former club, cutting inside Juan Miranda and curling a shot that snuck past Skorupski.
The lead was short lived, though, as Dominguez started a move that culminated in Dallinga converting despite his shot hitting Svilar’s legs.
The visitors then had a penalty due to Kone handling Emil Holm’s header and captain Lewis Ferguson clinically converted to put his side ahead just seven minutes after they had gone behind.
Riccardo Orsolini couldn’t add to the lead as he smashed a shot at Svilar, who then tipped Jens Odgaard’s venomous strike over the crossbar.
There was late drama as Evan Ndicka’s flick hit Lucumi’s hand and a penalty was given, and Dovbyk coolly converted with the final kick of the game as Bologna went back-to-back matches without a win having conceded late in both of those.
For Roma, it’s a fifth consecutive match unbeaten across all competitions, indicating they are bouncing back following a difficult start to the term.