Glenavon won an exciting Mid-Ulster derby to move back into the top six.
Portadown took the lead through a Peter McMahon header in the 11th minute but Andy McGrory equalised with a superb finish from the right side of the box.
James Singleton put Glenavon in front with a powerful header early in the second half and sub Robbie McDaid made it 3-1 from Mark Patton's cross.
McMahon was sent-off and Darren Murray got one back for the Ports before McDaid scored again in stoppage-time.
The red card came after McMahon stupidly kicked out at McGrory in the 75th minute.
However, the 10 men of Portadown revived the contest when Murray netted at the second attempt after Glenavon keeper James McGrath had parried his initial header.
McDaid made sure of the points in stoppage time when he tapped in at back post after Brendan Shannon's cross had been touched on by player-boss Gary Hamilton.
It capped a third league win this season for Glenavon over their fiercest rivals.