Giuseppe Mascara opened the scoring and a Marek Hamsik penalty secured the points as Napoli drew level with Milan.
Milan still lead due to a better head-to-head record while they could also re-establish their three-point lead at the top with victory at Fiorentina in the day's late game.
But with six games left and missing their most effective player this season, Napoli proved they're not going to give up their hopes of winning the title without a fight.
In a largely low-key first half, Napoli virtually sealed the three points with the only two clear chances they created.
The first came on the half hour mark but was helped in no small part by Bologna goalkeeper Emiliano Viviano.
Cristian Maggio crossed from the right and Ezequiel Lavezzi tried a clever flicked finish between his legs that was rolling wide of the far post with two defenders covering when Viviano dived out and pushed the ball straight into the path of Mascara who shot home.
The second chance came on the stroke of half-time as Hamsik and Lavezzi both beat the offside trap, but, faced with a two-on-one against Viviano, they almost fluffed their lines.
Hamsik tried to draw the goalkeeper and set-up his strike-partner but he failed to make Viviano commit and his pass was too soft, giving the Bologna stopper a chance to close down the Argentine.
Lavezzi tried to take the ball around him and Viviano brought him down, with a relieved Hamsik smashing home the spot-kick.
With a two-goal lead at half-time against a team that had created nothing, Napoli looked home and dry but Bologna were a transformed team after the restart.
Marco Di Vaio tested goalkeeper Morgan De Sanctis with a fierce shot from distance and then moments later De Sanctis recklessly charged from his goal, was beaten to the ball by Di Vaio but then watched on as the Bologna frontman somehow slotted his shot into the side-netting.
Bologna top scorer Di Vaio was having a game to forget and his worst miss came nine minutes from time as he met a cross from Antonio Busce three yards out at the back post but scuffed his volley wide.
De Sanctis then came to his side's rescue with a flying save three minutes from time to deny Matteo Rubin whose volley looked headed for the top corner.
Lazio moved back into the top four and the crucial final Champions League qualifying position with a comfortable 2-0 win at home to Parma.
Brazilian Hernanes opened the scoring with a crisp finish and Sergio Floccari sealed the points 13 minutes from time.
That took the Romans a point above Udinese, who controversially lost at home to Roma on Sunday.
Seventh-placed Juventus twice hit back from behind to beat Genoa 3-2 in Turin and keep alive their faint hopes of qualifying for next season's Champions League, leaving four teams in the fight for that fourth spot.
They trail Lazio by six points with sixth-placed Roma the other team in the running for a top four finish.
Genoa took the lead through a Leonardo Bonucci own goal and a strike from Antonio Floro Flores but Juve hit back through a Marco Rossi own goal and then Alessandro Matri.
And Luca Toni proved the Juve hero seven minutes from time with only his second goal for the club since joining from Genoa in January.
The match-winner said he took no special pleasure in putting one over his former employers.
"All I want is to do well for this shirt, every time I play I try to do what I can," Toni told SkySport.
"Today it went well, I came on and I managed to do great things.
"We need to take each game as it comes and concentrate, especially next week because we have a difficult match against Fiorentina."