Pigsty murders: Zachariah Olivier to spend Christmas in jail [VIDEO]
Substitute Edin Dzeko rescued a point for the side from the capital who were also hit by a Radja Nainggolan injury that could compromise their quarter-final in Spain midweek.
Eusebio Di Francesco’s Roma have 60 points from 30 games, but their grip on third is now threatened by Inter who edged two points behind.
Lazio are a further point back just outside the Champions League places for next season in fifth after surviving a scare to see off rock bottom Benevento 6-2.
Dzeko headed in after 76 minutes at the Stadio Dall’Ara after Erick Pulgar had given Bologna the lead on 18 minutes.
And the Bosnian forward admitted their trip to the Camp Nou for the first leg of their quarter-final clash was already on Roma’s minds.
“We are going into a very important match, we all had our thoughts on Barcelona a little bit, but even then we had chances and could have scored more,” said Dzeko.
“It’s difficult to explain what went wrong.”
Roma lacked speed against a Bologna side which included Di Francesco’s winger son Federico, with third-choice goalkeeper Antonio Santurro proving the unlikely hero for the home side.
Santurro was appearing in first Serie A game with Antonio Mirante suspended and understudy Angelo Da Costa injured.
And the 26-year-old did well on his debut keeping out an early Patrik Schick strike, followed by a Daniele De Rossi header from the resulting corner.
Nainggolan limped off after just 16 minutes with a muscular problem, and looks in doubt to face Barcelona.
Two minutes later Bologna were ahead, Pulgar picking up a poor clearance on the edge of the box to fire past Alisson.
Santurro denied Stephan El Shaarawy, with Kevin Strootman missing the chance to equalise when alone in front of goal.
But Dzeko replaced El Shaarawy with half an hour to go and got his head to Argentine winger Diego Perotti’s cross to fire past Santurro.
– Barcelona ‘totally different’ –
“We know that if we play like that against Barcelona, it won’t be enough,” said Di Francesco. “But we also know that Barca will attack. It will be a totally different match.”
Icardi, meanwhile, earned a standing ovation from the 60,000 crowd at the San Siro after bringing his tally of Serie A goals to 105.
The Argentine — who scored four in a 5-0 win over Sampdoria last time out — continued where he left off bagging the first after 38 seconds off an Ivan Perisic throw-in.
Perisic added a second on 13 minutes, with Icardi sliding in the third after the restart for a confidence boost ahead of next Wednesday’s Milan derby against AC Milan.
“I’m happy for my fastest goal in my career,” said Icardi. “It was the perfect day, not for goals, but because the team won. We go into the derby with the right frame of mind.
“We’re aware that we have to do well because there is little time to reach the goal of going to the Champions League.”
Serie A top scorer Ciro Immobile also scored a double as Lazio fought back after going 2-1 behind to 10-man Benevento, nabbing five goals in the last half hour.
Juventus face a stiff test to remain at the top as they host AC Milan later on Saturday with Napoli, second and two points behind the leaders, travelling to Sassuolo.
Download our app and read this and other great stories on the move. Available for Android and iOS.