The striker slotted past Stoke City team-mate Asmir Begovic at the Arena Pantanal, although Bosnia were unfortunate not to have led eight minutes earlier when an Edin Dzeko goal was incorrectly ruled out for offside.
The European nation needed a goal in the second half to keep their qualification hopes alive, however they were unable to break down a solid Nigerian defence.
The win leaves Nigeria second in Group F and requiring either a point from their group finale with Argentina or an Iran draw or defeat against Bosnia.
Safet Susic omitted own-goal scorer Sead Kolasinac from their brave 2-1 loss to Argentina, however, Bosnia were exposed on their left side with Senad Lulic and Emir Spahic caught out of position early.
They were very sloppy at the back in the early stages, typified by a poor clearance by captain Spahic in the sixth minute – which forced his fellow defender Haris Medunjanin to earn a yellow card for bringing down Ahmed Musa.
Nigeria produced plenty of chances on goal and deserved to open the scoring, with Odemwingie’s free-kick in the seventh minute deflecting narrowly wide of the upright, while Ogenyi Onazi – who tried his luck from range on a few occasions – forced a low save out of Begovic on 14 minutes.
For all their instability at the back, Bosnia settled into the game and should have been credited with the game’s opening goal when Dzeko got in behind and found the back of the net in the 21st minute – only for the assistant’s flag to be incorrectly raised.
Dzeko was clearly Bosnia’s best chance of scoring the opener, and minutes later he unleashed a shot from inside the area that Nigeria goalkeeper Vincent Enyeama was forced to produce a strong save to deny the Manchester City man.
The Bosnians would be further aggrieved with the officials when they felt they were denied a foul in the lead up to Nigeria’s opener – with Spahic left on the ground, as Emmanuel Emenike squared a ball for goalscorer Odemwingie.
Bosnia were struggling to create much danger as they hunted the equaliser they required, and Susic rung the changes prior to the hour-mark.
Vedad Ibisevic, the goalscorer against Argentina, was brought on for Izet Hajrovic, and Sejad Salihovic replaced Lulic.
It was almost déjà-vu for Spahic in the 60th minute, as Emenike brushed aside the Bosnian skipper, but he had cover this time around.
Moments later, Begovic was forced off his line to deny the forward on the left hand side of the park, as the Fenerbahce man continued to cause problems.
Ibisevic had a free header from a corner in the 74th minute, but he failed to connect as the ball spawned over the crossbar.
But in the third minute of additional time, Dzeko came within a whisker of an equaliser, as his close-range effort was saved onto the post by Enyeama.