Manchester City striker Edin Dzeko put Safet Susic’s side into the lead as his drilled effort in the 22nd minute went in via the post.
Bosnia doubled their lead through Roma playmaker Miralem Pjanic who stroked the ball into the back of the net just before the hour mark.
Reza Ghoochannejhad pulled a goal back for Carlos Queiroz’s side with ten minutes to go but any hopes of an incredible comeback were soon dashed as right-back Avdija Vrsajevic extended Bosnia’s lead almost instantly.
Bosnia: Begovic, Vrsajevic, Sunjic, Spahic, Kolasinac, Hadzic, Pjanic, Besic, Susic, Dzeko, Ibisevic.
Scorer: Dzeko, 22, Pjanic, 58, Vrsajevic, 82.
Iran: Haghighi, Hosseini, Sadeghi, Montazeri, Pouladi, Teymourian, Nekounam, Dejagah, Shojaei, Hajsafi, Ghoochannejhad.
Scorer: Ghoochannejhad, 81.