Northern Ireland were once again shown the value of clinical finishing as Bosnia and Herzegovina captain Edin Dzeko condemned them to a third straight Nations League defeat in a match that saw them hit the post three times.
Dzeko scored in either half on the ground where he began his professional career, but Northern Ireland will rue a shocking miss from Gavin Whyte and an early George Saville effort that came back off the frame of the goal.
The 2-0 defeat leaves Northern Ireland on the brink of relegation to League C, with their fate now out of their hands.
It was a sadly familiar tale for Michael O'Neill's men, who dominated in the reverse fixture at Windsor Park last month but were undone by defensive mistakes.
Things might have been different here if just one of Northern Ireland's three early chances had fallen to a striker, but instead Saville got all three.
There was just one minute on the clock when Steven Davis played him in on the left, but Saville's rising shot went narrowly over.
The pair linked up again in the 14th minute with Davis crossing from the right, but Saville could not make proper contact as his effort spun wide.
The best chance came after 20 minutes when Jamal Lewis picked out Saville from the left and his first-time shot beat Ibrahim Sehic only to come back off the post.
In between times, Dzeko had hit a half-volley just over after controlling Miralem Pjanic's raking ball with his shoulder, and it was the Roma striker who would open the scoring in the 27th minute.
Lewis slipped inside the area to gift possession to Edin Visca and he played in Dzeko to apply a calm finish which left Bailey Peacock-Farrell with no chance.
Northern Ireland looked rattled and Dzeko had the ball in the net moments later with a powerful volley, only to be denied by an offside flag. Replays suggested it was raised in error.
Pjanic was the next to go close, sending a free-kick on to the roof of the net after Ollie Norwood was booked for bringing down Elvis Saric outside the area, earning him a suspension for next month's match against Austria.
After further chances for Dzeko and Ognjen Vranjes, Northern Ireland were grateful to go in at half-time only 1-0 down.
They were under threat again soon after the restart, but Dzeko could not get his feet sorted out after being played in by Muhamed Besic and shot tamely, while Saric's follow-up effort was held by the diving Peacock-Farrell.
Whyte replaced the subdued Norwood just before the hour, but what could have been the perfect instant impact was instead a shocking miss.
The Oxford man rose to meet Stuart Dallas' cross at the far post and, although his effort was saved by Sehic, the ball fell for him to apply what looked to be an easy finish into an open net.
Instead he fired straight on to the post from point-blank range.
And Northern Ireland were made to pay moments later. The defence was all at sea as Dzeko found himself in acres of space to collect Pjanic's cross and place his finish into the far corner of the net.
Northern Ireland pushed for a goal late on, with substitutes Josh Magennis and Kyle Vassell using their size to cause problems, but, when Whyte struck the post again in the last minute, it summed up their evening.
O'Neill admitted his side had been punished for their mistakes.
He told Sky Sports: "You are punished for a mistake. A young player makes the wrong decision in the wrong area of the pitch and that's why Dzeko is the player that he is, he punishes you.
"We had great chances to go level and we don't take them. In the end we are punished again when we are pushing forward.
"It's a steep learning curve for us. There's aspects of the game that were positive, there were also things that were negative."