Lafferty, whose deadly form has brought him five goals in the campaign, this time snatched at his big 83rd-minute chance, Ciprian Tatarusanu making the save before pawing clear Oliver Norwood’s goalbound free-kick moments later.
Victory would have seen Michael O’Neill’s side leapfrog their opponents at the top of Group F, but Tatarusanu’s ensured they must make do with the second automatic spot with four games to go.
For a side who have not featured at a major tournament in 30 years and entered the draw for France among the fifth seeds, that must still be a source of immense pride.
Jonny Evans was also a central figure, going closest to opening the scoring in the first half with a smart header then deflecting Romania’s best chance, by Gabriel Torje, fractionally wide.
Michael O’Neill handed two men their first competitive starts, with Michael McGovern deputising for the ill Roy Carroll in goal and Stuart Dallas given the nod ahead of Niall McGinn on the left flank.
It was also all change around the ground, with the beloved West Stand reduced to rubble and just two operational stands due to ongoing redevelopment work.
Northern Ireland were attacking what used to be the Kop in the first half, with a solitary cameraman taking the place of the country’s most raucous supporters.
The 10,000 fans who did have seats ensured a fine atmosphere before kick-off but Claudiu Keseru almost played spoilsport in the second minute when he fizzed a free-kick narrowly wide from 35 yards.
Alexandru Chipchiu also came close to giving the visitors an early lead, catching Gareth McAuley out of position only for Steven Davis to track back and conjure a perfectly-timed challenge in the box.
The hosts took their time settling but Lafferty hustled a corner that allowed the green shirts to push forward.
McAuley and Lafferty were obvious targets but Norwood instead picked out Chris Brunt on the edge of the area.
It was a neat routine but required a cleaner volley than the West Brom man could muster on the occasion of his 50th cap.
The remainder of the half took on a frenetic quality.
Torje slalomed his way through a handful of non-committal tackles but getting lost on the way to goal, Lafferty snatched at a shot from 20 yards and Mihai Pintilii earned an injury and a booking for a crude challenge on Conor McLaughlin.
Jamie Ward, currently a free agent following his release from Derby, was doing his best to bring some quality to the right wing but there was little else to please the purist.
Northern Ireland almost nipped in front in the 43rd minute, when Brunt’s corner was glanced across goal by Chris Baird.
Evans was quickest to react, stooping to head toward the roof of the net only for Tatarusanu to make the save.
Northern Ireland made the running after the interval, Dallas firing wide after collecting a half-cleared corner and Lafferty heading over from Brunt’s hanging cross.
But there were also lapses in concentration.
Ward and McAuley both gave the ball up carelessly in dangerous territory and could easily have cost their side a goal.
Chipchiu botched the first chance by going to ground too easily in the box but Torje went much closer in the 64th minute.
He raced into space after McAuley’s error and saw his effort squirm agonisingly wide after Evans managed to get a divert the ball with an outstretched leg.
Northern Ireland continued knocking on the door to no avail – Brunt sending a well-placed free-kick into the stands and Norwood lashing a hopeful effort off-target from 25 yards.
There was a worrying moment when Evans went down with cramp while play continued, creating a vacuum in defence.
Romania gladly swarmed into it as Evans three times attempted to jog back only to collapse.
That was the end of his day, Craig Cathcart replacing him for the last 11 minutes while Corry Evans took over from Ward.
As the decibel level spiked in the closing stages, the hosts responded.
First McAuley’s knockdown allowed Lafferty the chance to poach another winner but for the first time in the campaign his final touch was off.
Norwood could have struck his 30-yard free-kick any better, dipping it at pace only for Tatarusanu to beat it clear.