Rudi Garcia's men remain comfortably in Serie A's second place thanks to the January signing's debut goal for the club at the Stadio Renato Dell'Ara
The Rossoblu were toothless throughout the first half and Mattia Destro almost scored midway into the opening period with an effort that clipped the post and spun wide, before Nainggolan made up for lashing a couple of efforts well past by calmly converting from eight yards.
Rudi Garcia's men were almost made to pay for their dropped tempo and intensity after the break, with the hosts going close to levelling three times in the final 20 minutes but ultimately falling to a narrow defeat.
The victory sees the Giallorossi leave third-placed Napoli seven points adrift of them with Sunday's round of matches still to play, while the hosts remain just two points clear of relegation.
Davide Ballardini's men started brightly, despite their later lethargy, with Rolando Bianchi beautifully controlling a long ball forwards on the counterattack and forcing Morgan De Sanctis to leap backwards to cling to the Rossoblu striker's chipped shot.
Eighteen minutes in saw Destro look on with despair as, laid off neatly by Gervinho, he struck the post with a low attempt from the edge of the box. He then had to watch as the ball agonisingly spun sideways and out for a goal kick.
Nainggolan skied two shots in quick succession but made up for his wayward finishing by converting a promising Roma attack with eight minutes remaining until half-time. The former Cagliari midfielder latched onto a deft chip across goal from Miralem Pjanic to tap home from close range.
The hosts improved marginally before the break, but they remained lacklustre in comparison to Garcia's fluid and effective charges.
The second half saw a drop in tempo as the visitors slowed their attacking pace due to their lead and Ballardini's side struggled to find gaps to exploit at the other end. Chances were few and far between but the home crowd remained in fine voice to try to rouse their team to an equaliser.
Substitute Andrea Mantovani almost upset the script 17 minutes from time by heading inches wide from a corner as shot-stopper De Sanctis stood helplessly rooted to the spot.
Roma's attacks were much more fleeting in the second 45 minutes as their primary concern became defending the slight lead they held.
Their lack of interest in extending the lead almost cost them late on, as Bologna substitute Davide Moscardelli nodded forwards to Ibson, but De Sanctis was quick off his line to block the sliding attacker's effort.
The game almost had a jaw-dropping finale as Moscardelli dinked in a cross from the right and Lazaros Christodoulopoulos - unmarked - somehow put his header wide to the left, burying his face in the turf with frustration as he knew he had scuppered a golden chance to equalise.