Jay Donnelly scored the only goal as Cliftonville extended their unbeaten league run to six matches and kept up their pursuit of leaders Crusaders.
Donnelly popped up at the back post to net a downward header from Martin Donnelly's cross in the 33rd minute.
The Reds stay eight points behind their north Belfast rivals at the summit thanks to their ninth consecutive victory over Ronnie McFall's side.
The Ports have now lost their last six Premiership outings and remain eighth.
Ronnie McFall's side have failed to score a goal in each of their nine defeats at the hands of the Reds.
Early in the game, Philip Lowry had a clear sight of goal but his weak shot was easily gathered by home goalkeeper Conor Devlin.
At the other end, David Miskelly made fine saves from Chris Curran and a Jay Donnelly header.
Donnelly's strike proved to be the winner, although both sides had chances after the interval.
Lowry's weak header was saved by Devlin, while Martin Donnelly shot tamely at Miskelly, who also denied Curran's curling effort.
What they said
Cliftonville manager Gerard Lyttle: "The aims were to get a win and keep a clean sheet and we achieved both. We controlled most of the game and I'm happy with the three points.
"You are always wary of a 1-0 lead and I was disappointed that we passed up a couple of second-half chances, but I'd take that result for the remainder of the season, no problem."
Portadown assistant manager Kieran Harding: "I thought we were outstanding today and unfortunate not to get a draw. Defensively we had a good shape about us and created some clearcut chances on the break which we would have taken on another day."