Former Linfield favourites Mark McAllister and Philip Lowry each found the net to dent the Belfast side’s title ambitions and stop the rot for Portadown after six successive league defeats.
Linfield carved out an early opening in the 2-1 success for Portadown when Kirk Miller’s looping cross from the right found Ross Gaynor at the back post but David Miskelly blocked the half-volley.
A Chris Casement free-kick whipped into the danger zone was then diverted goalwards on the run by Mark McAllister but it flashed past the post.
The Ports took control on 22 minutes from the penalty spot as, under pressure from Marcio Soares, Mark Stafford struggled to deal with a ball into the box and the Linfield defender was eventually adjudged to have fouled the teenage striker.
McAllister waited for the appeals to stop and stepped up to steer the spot-kick past Ross Glendinning.
Miskelly was on hand to protect the lead with a save off Paul Smyth following good work along the left by Andy Waterworth and substitute Aaron Burns.
Waterworth hooked the ball over the target before the break but the Ports entered half-time with the advantage.
Smyth tested Miskelly again during the early exchanges of the second half and pressure by the visitors increased - with Jimmy Callacher close to converting a Miller free-kick.
McAllister and Philip Lowry combined to carve open the Linfield backline but Soares was unable to move clear of the defence.
Portadown’s push towards a welcome win gained another boost on 69 minutes with the second goal of the night as Lowry’s glancing header steered home a Casement free-kick.
It marked a second goal inside a week by the January signing following his appearance on the scoresheet in last weekend’s Irish Cup defeat of Coleraine.
Portadown suffered a setback on 81 minutes when Ken Oman was dismissed for a second booking in the aftermath of a goal ruled out.
Linfield closed the gap on 83 minutes with a well-worked move around the edge of the penalty area involving Burns and Guy Bates before Matthew Clarke squeezed the ball inside Miskelly’s left-hand post.
However, the late pressure from Linfield against the 10-man hosts failed to produce an equaliser - cutting short, as a result, the Belfast side’s six-game winning league run book-ended by defeats to Portadown.
PORTADOWN: David Miskelly, Chris Casement, Ross Redman, Keith O’Hara, Chris Ramsey, Mark McAllister, Tim Mouncey, Ken Oman, Michael Gault, Philip Lowry, Marcio Soares. Subs: Martin Marron, Matthew Parker, Mikey Withers, Padraig Judge, Adam Brown.
LINFIELD: Ross Glendinning, Mark Stafford, Jimmy Callacher, Andrew Waterworth, Kirk Miller, Sean Ward, Matthew Clarke, Jamie Mulgrew, Reece Glendinning, Ross Gaynor, Paul Smyth. Subs: Guy Bates (on for Glendinning, 73 mins), Michael McLellan (on for Miller, 66 mins), Aaron Burns (on for Stafford, 33 mins), David Kee, Stephen Fallon.
Referee: Arnold Hunter.