Daniel Johnson and a penalty from Joe Garner appeared to have secured North End a vital win against Vale who had defender Richard Duffy sent off.
But Vale, who are still without a win in nine games, grabbed a vital point in their battle against the drop when O’Connor put away the game’s third penalty five minutes from time.
The Lilywhites are now four points ahead of the MK Dons in the battle for the second automatic promotion place.
Aston Villa loanee Johnson put North End ahead after an opening siege of the Port Vale goal.
He was in the right place to thump home as Vale’s rearguard caved in at a 12th-minute corner.
Before then Joe Garner’s 30-yard strike was turned onto the near post by Chris Neal, who later did well to beat out an equally-powerful drive from Callum Robinson.
Garner went close twice and Robinson opened the second period by whistling an effort past the post.
But the arrival of Tom Pope ruffled Preston’s feathers and the big striker won a penalty when he was held back trying to reach Mark Marshall’s cross.
O’Connor converted the 52nd-minute award, but Vale enjoyed parity for just seven minutes.
Duffy was adjudged to have used his hand blocking Tom Clarke’s follow-up to the defender’s initial effort which had crashed onto the right-hand post.
After Duffy was sent off, Garner coolly sent Neal the wrong way to edge Preston back in front.
But referee Richard Clark was pointing to the spot for a third time in the 85th-minute when Jon Welsh caught Pope inside the box and O’Connor levelled again with another confident penalty conversion.