Timmy Adamson scored the winner three minutes into the second half to ensure that Crusaders remain four points behind Premiership leaders Linfield.
Adamson had the simple task of tapping in after meeting a Colin Coates cross.
Jordan Owens was twice denied by David Miskelly in the first half and the striker saw a goal-bound effort blocked by Chris Casement after the interval.
Sean O'Neill made a fine late save from Kevin Braniff as the Crues extended their unbeaten record to 16 matches.
Crusaders had the better chances of a disappointing first half at Shamrock Park but Owens headed straight into the arms of Miskelly and then the big forward also shot straight into the arms of the home keeper.
Darren Murray dragged a shot across the face of goal for the Ports.
After Adamson broke the deadlock, Gary Breen headed over for the hosts and Portadown manager Ronnie McFall was sent to the stands for dissent.
Crusaders are now clear in second place, while Portadown drop to fifth after failing to score in a league game for the first time this season.
"Conditions were poor so we had to dig in to get the result," said Crusaders defender Colin Coates after the game.
"Everyone knows the firepower that Portadown have up front, so we were delighted to keep a clean sheet. Confidence is a big thing and we have confidence at the back at the moment."