Andre Schuerrle made sure of Dortmund's first league win of the year with an 84th minute winner after Cologne twice had come back from a goal down. Dortmund are second on 34 points, ahead of Bayer Leverkusen and Schalke 04 on goal difference.
Dortmund coach Peter Stoeger, returning to Cologne only 61 days after his sacking, gave the 20-year-old Belgium international his first start and the player paid him back when he scored in the 35th minute for the lead.
Batshuayi's second came after the hour mark, pouncing on a defensive error to slot in.
The Belgium striker is on-loan at BVB to the end of this season.