The Dane broke the deadlock near the hour-mark at the end of a fine collective move.
Fiorentina were seeking a ninth consecutive Serie A victory that would have seen them break the club record set in 1960.
After a balanced first half, Bologna were the better side after the interval and had several occasions to score — including Santiago Castro hitting the post — before eventually braking the deadlock when Odgaard made the most of a loose ball in the box to score his third league goal.
Bologna moved up to seventh place in the standings, while Fiorentina remain in fourth, level on points with third-place Inter Milan. League leaders Atalanta have a two-point lead over Napoli.
In Sunday's late match, AC Milan drew 0-0 at home with Genoa.
The Rossoneri drop to eighth, but the point for Genoa sees them move up to 13th.
Earlier, substitute Alessandro Gabrielloni and Nicolas Paz both scored in added time as Como beat Roma 2-0.
Nicolas Paz proved a handful for Roma defenders, scoring once in the win for Como. (AP PHOTO)
Gabrielloni, who came in with 10 minutes left to play, scored his first Serie A goal in the 93rd minute before turning provider for Paz, who sealed the win four minutes later.
It was Como's first league victory since September 29, and third of the season, moving them to 16th place with 15 points.
Hellas Verona players gave coach Paolo Zanetti some respite with a 3-2 win at Parma.
The result, with goals from Diego Coppola, Amin Sarr and Daniel Mosquera, snapped a four-match losing streak for the injury-hit team.
Simon Sohm scored a brace but it was not enough for Parma. Verona moved one point away from the relegation zone, joining Parma on 15 points.
Also, Lecce defeated fellow strugglers Monza 2-1.