With the score locked at 0-0 and Nigel Worthington’s side finally starting to get on top after their opponents had dominated the first period, the Rangers midfielder gifted Marko Pantelic a 67th-minute goal.
The goal handed Serbia three points and pole position in the battle for second place in Group C.
Northern Ireland, meanwhile, will head face Estonia on Tuesday in fifth place after their next opponents recorded a surprise win over Slovenia.
Both Jonny and Corry Evans will miss that match after collecting yellow cards.
The bad news had started for Worthington before kick-off when key duo Kyle Lafferty and Paddy McCourt failed late fitness tests on calf injuries and midfielder Sammy Clingan pulled out due to illness.
In the sixth minute Chris Brunt had the first real shy at goal, collecting Chris Baird’s pass before testing Bojan Jorgacevic at his near post.
Little did Northern Ireland know that would be the sum of their attacking efforts by the end of a tough first half.
After 12 minutes Serbia went close when former Liverpool forward Milan Jovanovic surged towards the penalty area and hit the crossbar with a deflected effort.
That settled the visitors, who went close again when Manchester City full-back Aleksandar Kolarov cut inside Craig Cathcart and forced a fine save from the stretching Lee Camp.
In an attempt to get David Healy into the game Brunt was moved up the pitch as a second striker but that merely relieved Dejan Stankovic of some defensive duties. The Inter midfielder, winning his 99th cap, began advancing further up the pitch but scuffed his first shot wide of Camp’s goal.
A second chance presented itself in the 28th minute as the ball was headed out from a corner, but this time Stankovic shot over from 20 yards.
Serbia continued to press and looked sure to open the scoring when a long ball from defence caught Northern Ireland off guard.
Pantelic was in pursuit but, with Camp committed and Gareth McAuley pressuring, he lifted his shot over the bar.
Jonny Evans was having a hard night keeping pace with the busy Zoran Tosic but did manage to block the winger’s goalbound shot as half-time approached.
Healy, a willing but frustrated presence up front, took a boot to the head before the interval, Slobodan Rajkovic booked for high feet.
Northern Ireland regrouped during half-time and re-emerged with a higher line and better shape.
Their big chance came after 55 minutes when Grant McCann’s shot ricocheted off a defender and found Jonny Evans on the left.
He chipped a cross into the centre where his brother Corry was waiting but the midfielder put a free header high and wide from close range.
There was another chance within minutes, Brunt pinging a 40-yard pass to Healy, whose cross was messily handled by Jorgacevic.
Brunt had motored up the pitch to strike the loose ball but his shot could cannoned off a red shirt and away from danger.
Corry Evans, who followed his miss with a yellow card, was replaced by Niall McGinn on the hour.
The Celtic man was quickly into the action, turning Kolarov and cutting back for McCann, who worked Jorgacevic from the edge of the area.
The Windsor Park faithful were sensing a goal but Milos Ninkovic gave a warning after 65 minutes, Camp making an athletic save.
But there was no stopping Pantelic two minutes later, Davis producing his nightmare back-pass to leave Camp isolated.
The Olympiakos striker made the most of his good fortune, rounding the keeper and slotting into an empty net.
Warren Feeney was summoned from the bench in place of McCann as Worthington attempted to grab the all-important equaliser, but his side looked deflated.
The momentum that had been building since the restart had all but evaporated and if not for the ever-alert Camp, who made two more interventions, Serbia would have scored again.
Healy gave way to Millwall forward Josh McQuoid for the final seven minutes – plus an added four for injuries – but there was to be no late drama.