Portadown moved level on points with Linfield at the top of the Premiership table with this deserved victory.
Matthew Tipton and Brian Gartland had first-half chances for the Ports while Rory Patterson and Peter Thompson both went close for the Blues.
Tipton scored from the spot on the hour after Albert Watson has tugged the shirt of Gartland inside the area.
Tipton added the second when he latched onto a long ball and lobbed the ball over the advancing Alan Blayney on 88.
Tipton missed from six yards early on and, at the other end, Patterson's shot was partially saved by David Miskelly and his next effort was cleared off the line by Chris Ramsey.
Gartland's volley went wide off a Linfield player and Miskelly produced fine saves from Thompson and Patterson.
After Tipton broke the deadlock, Aaron Burns missed a glorious chance when he headed wide of the target when left unmarked.
Ross Redman fired over from 20 yards, before Tipton made the victory secure with his second.
The Ports now trail the Blues only on goal difference.