Alessio Cerci scored 20 minutes into a first half that La Viola dominated, before substitute Gaston Ramirez levelled five minutes after coming on at half-time.
Both sides ended the match with 10 men as Per Kroldrup was shown a straight red card for fouling Marco Di Vaio - who missed the subsequent penalty - before Ramirez was given his marching orders 10 minutes from time.
A point does little for Fiorentina, who remain ninth in the table, but Bologna are now six points clear of the bottom three ahead of the rest of the fixtures in the penultimate weekend of the season.
Cerci could have opened the scoring after a fairly even first quarter of an hour when his left-footed strike was parried by Emiliano Viviano, but he soon converted for his sixth league goal of the season when he stooped to head in Juan Manuel Vargas's exquisite cross.
After that Fiorentina took full control, and they had several opportunities to double their advantage.
Adrian Mutu floated in an inviting delivery that was just too high for the onrushing Valon Behrami to get his head to, before Alberto Gilardino scooped an effort over the bar when one-on-one with the keeper.
Gilardino was clearly struggling with an injury, and was replaced by Mario Santana just before the break, moments before Francesco Della Rocca forced an agile save from Sebastien Frey from his curling free-kick.
Bologna boss Alberto Malesani replaces right-back Evangelos Moras for Ramirez at half-time, and it only took five minutes for the positive switch to bear fruit. The Uruguayan capitalised on some slack defending to head home an inviting cross from the right to end his team's nine-hour goal drought.
It looked as though the visitors were all set to claim their first win in nine matches when the Kroldrup desperately brought down Di Vaio in the area and was sent off, but the Bologna skipper and top scorer did not register his 20th league goal of the season, instead blazing over the bar from 12 yards.
Bologna failed to make their numerical advantage count, but they were denied a second penalty 10 minutes from time when Vargas clearly tripped Ramirez inside the area, only for the referee to book the Bologna goal scorer for simulation. Ramirez's was rightly irked by the decision, but his protests cost him a second booking for dissent and a subsequent red, ensuring both sides finished the match with 10 men.