The home side dominated the ball in the opening half at a wet Estadio do Dragao but failed to test Roy Carroll in the Ireland goal, with Manchester United's Jonny Evans clearing the danger on multiple occasions.
Ireland then took the lead on the half-hour mark when Evans released Lafferty who in turn held the ball up before feeding Niall McGinn.
© PA Photos
The Aberdeen man's first touch took him past the Portugal defence and he finished with a lifted effort over Rui Patricio.
The underdogs almost shot themselves in the foot minutes later when Craig Cathcart hooked a centre onto his own crossbar but they made it to half-time in the lead.
Cristiano Ronaldo, who was making his 100th international appearance, had his first real opportunity in the 58th minute when Nani crossed for the Real Madrid man, who was denied by the outstretched leg of Carroll.
Ireland then wasted the opportunity to counter-attack, allowing Portugal to go forward and they had a trio of chances within a minute.
First, Nani got to the byline and his cross was inches from being poked in for an own goal before Ruben Amorin forced Carroll into a save and Steven Davis sliced horribly just over his own crossbar.
In the next 20 minutes the visitors managed to restrict Portugal to shots from range but the third-ranked side in world football finally broke through with 11 minutes remaining.
The hosts pelted the Ireland goal in the remaining minutes and substitute Eder wasted the best opening by failing to get a touch on Varela's centre.
A point keeps Ireland fourth in Group F while Portugal move level Israel with Israel in second, five points behind Russia, to whom they lost on Friday.