Odsonne Edouard rewarded Celtic for an improved second-half performance in Sarajevo as his winner secured their place in the Europa League group stage.
The French striker poked home 20 minutes from time to settle the play-off after goalkeeper Vladan Kovacevic spilled a Ryan Christie shot.
Neil Lennon’s side were rarely troubled as they progressed past the qualifiers for the third year in succession.
Celtic will discover their group opponents in Friday’s (12:00 BST) draw.
Having had their Champions League hopes extinguished at home to Ferencvaros, Lennon’s men have capitalised on their second chance in Europe.
But they were made to work for it in Bosnia-Herzegovina after a sluggish first 45 minutes. It took until shortly before the interval to register a shot on target, Mohamed Elyounoussi ‘s volley from an Edouard lay-off proving an easy gather for the keeper.
Celtic were given an early warning at the other end when the hosts broke at pace and Benjamin Tatar lashed a near-post drive into the side-netting.
A big improvement was required from Lennon’s men, and it was duly delivered. Kristoffer Ajer scuffed wide from six yards after a corner dropped at his feet, then Elyounoussi hammered a shot at the keeper.
The second-half momentum kept building, with Christie thumping a shot from distance inches over and substitute Hatem Elhamed volleying narrowly wide.
The nerves were finally eased when Edouard - restored to the starting line-up in place of the injured Albian Ajeti - followed up on Christie’s shot to score his sixth goal of the season.
Christie and Jeremie Frimpong had chances to make the closing stages more comfortable, but Celtic saw out the game with minimum fuss.
More to follow.
- 6OremusBooked at 90mins
- 29DupovacBooked at 43mins
- 24DjokanovicSubstituted forJukicat 85′minutes
- 38Olubori Adebowale FanimoSubstituted forVelkoskiat 85′minutes
- 9AhmetovicSubstituted forHandzicat 68′minutes
- 6BittonSubstituted forElhamedat 10′minutes
- 30FrimpongBooked at 89mins
- 17ChristieSubstituted forNtchamat 86′minutes
- 22EdouardSubstituted forKlimalaat 79′minutesBooked at 90mins
- Benoît Bastien