Goals from Dino Ndlovu and Eyal Golasa put Haifa in the driving seat but a frenetic period at the end of the first half saw the home side level through Miguel Vitor and Sotiris Ninis, while Miroslav Stoch also had two penalties saved by visiting goalkeeper Bojan Saranov.
Dimitris Salpingidis then completed the turnaround as PAOK maintained their unbeaten record and left Haifa still searching for a first win.
PAOK showed a great deal of promise in the early stages and should have gone in front after 11 minutes but for a brilliant stop from Saranov to keep out Stoch's powerful left-footed drive.
Haifa took full advantage three minutes later with Ndlovu grabbing the opening goal, firing low into the bottom right corner.
And they were even further in front in the 23rd minute as Ruben Rayo pumped in a cross which was stabbed home by Golasa.
However, PAOK got themselves back into the match in a bewildering 10-minute spell before half-time.
Miguel Vitor reduced the deficit with a header from Lino's free-kick and minutes later PAOK were awarded a penalty for Edin Cocalic's trip on Stoch.
The Slovakian saw his spot-kick kept out by another incredible save from Saranov, who then further showcased his talent to deny the follow-up from Ninis.
However, Ninis got his revenge from the subsequent corner, heading in the assist from Stefanos Athanasiadis to bring PAOK level.
The hosts were then awarded their second penalty a minute before the interval, Cocalic again the offender this time with a handball. Stoch once more stepped up to take responsibility but his way was blocked by Saranov as the striker continued to come up short against his nemesis.
But the visiting defence was breached for a third time after 66 minutes, Lino again providing the ball into the area where Salpingidis was waiting to poke in from close range.
This time, Haifa struggled to recover from the blow and the closest they came to equalising was a header from Shlomi Azulay which was punched away by PAOK goalkeeper Jacobo three minutes from time.