Cliftonville stayed top of the Premiership on goal difference by winning an exciting Solitude contest.
Jody Lynch's deflected free-kick gave the Reds the lead on 30 minutes and Liam Boyce made it 2-0 after half-time.
Darren Murray pulled one back with a superb shot in the 73rd minute but Joe Gormley made it 3-1 for Cliftonville.
Ports keeper David Miskelly saved a Ciaran Caldwell penalty before Brian Gartland headed in a second for the visitors who had Sean Mackle sent-off.
Mackle picked up a second yellow card for dissent near the end.
Portadown have now failed to win any of their last seven matches in the league, their only victory this season being at Lisburn Distillery on the opening day.
They had plenty of chances early on but didn't take them - and they were made to pay by Tommy Breslin's table-toppers.
Kevin Braniff had a shot blocked and Ryan Burns narrowly failed to get a telling touch on Jamie Tomelty's dangerous ball into the goalmouth.
Home keeper Conor Devlin saved well from Joe McNeill's shot from 10 yards as Portadown pressed for the breakthrough.
However, the goal came at the other end as Lynch's free-kick deflected off Braniff's head in the Portadown defensive wall to leave keeper Miskelly completely wrong-footed.
It was 2-0 in the 53rd minute as Lynch found Boyce who controlled with his right foot before netting a fine finish with his left.
Murray pulled one back for the Ports with a brilliant goal as he fended off an opponent before netting a great shot from the edge of the box.
Gormley restored the home side's two-goal advantage on 82 minutes after Boyce's deep cross was headed back by Martin Donnelly.
Cliftonville got a penalty when defender Chris Casement handled in the area and sub Caldwell, just on for Gormley, had his spot-kick well saved by Miskelly.
From the corner, Barry Holland headed off the bar.
The Ports were given late hope when defender Gartland headed in from Ross Redman's free-kick and time was almost up when Mackle was dismissed.