The hosts, number one in FIFA's world rankings, were missing several players due to injury, with striker Romelu Lukaku ruled out a day before the match to bring Batshuayi into the starting line-up.
Belgium had the vast majority of possession, but struggled for over an hour to break through a dogged and organised Iceland back line in a game shrouded most of the time by thick mist.
Eden Hazard, who played alongside his brother Thorgan on the left, finally unpicked the visitors' defence in the 65th minute when his perfectly-weighted cross found Thomas Meunier, who only had to stroke the ball across to Batshuayi in front of an open goal.
Iceland, who knew they were relegated before Thursday's match, showed more intent in the second half and might have equalised, but Belgium keeper Thibaut Courtois saved Albert Gudmundsson's shot with his legs.
News that makes sense
Your trusted source for staying up-to-date with the world around you. Get free daily news updates and analysis, straight to your inbox.
Batshuayi guaranteed the victory in the 81st minute when he pounced for a tap-in after Iceland keeper Hannes Halldorsson, who normally plays in the Azerbaijan premier league, let slip a shot from substitute Hans Vanaken.
Belgium will travel to Switzerland for their final pool match on Sunday, knowing a draw would ensure they reach the Nations League finals in June.
The match was also notable for a 100th international for Axel Witsel, the second most-capped Belgian behind defender Jan Vertonghen.
Though far from a sell-out, one notable spectator was Manchester United manager Jose Mourinho, watching from the stands even though none of his Belgium players were fit. Marouane Fellaini was also injured.
(Reporting by Philip Blenkinsop, editing by Ed Osmond)
