A 66-run fourth wicket stand between skipper Eoin Morgan (47 not out off 40 balls) and Rahul Tripathi (41 off 32 balls) provided the base for the Kolkata franchise to reach the target with 3.2 overs to spare.
Earlier, Sunil Narine took 2/22, while Varun Chakravarthy scalped 1/24 as KKR picked up wickets at frequent intervals to derail the PBKS innings.
Only opener Mayank Agarwal (31 off 34 balls) and tailender Chris Jordan (30 off 18) could be worthwhile contributors for PBKS.
Agarwal had shared a 36-run opening stand with skipper K.L. Rahul in 5.4 overs but three quick wickets -- that of Rahul (19), Chris Gayle (0) and Deepak Hooda (1) -- set the Punjab franchise back, reducing them to 42/3 in 7.4 overs.
Agarwal also departed soon as the spinners came into operation during the middle overs. When Nicholas Pooran (19) was dismissed with just 79 runs on board, PBKS were in danger of getting bowled out for under 100. However, Jordan hit some lusty blows to take the team to their eventual total.
In response, KKR started on a miserable note, getting reduced to 17/3 at the end of the third over, losing the wickets of Nitish Rana (0), Shubman Gill (9) and Sunil Narine (0).
Tripathi survived a run out scare before he hung on to help Morgan resurrect the innings. By the time Tripathi was dismissed, KKR were already on course for a victory, needing 41 to win off 54 balls.
Morgan, who had a torrid tournament thus far, finally came good as he hit two sixes and four fours to help his side cross the finishing line.
KKR have now moved to the fifth position on the points table while, PBKS are placed sixth. Both temas have two wins from six matches, but better net run rate puts KKR ahead.
Brief scores: Punjab Kings 123/9 in 20 overs (M Agarwal 31, C Jordan 30, P Krishna 3/30, S Narine 2/22, V Chakravarthy 1/24) lost to Kolkata Knight Riders 126/5 in 16.4 overs (E Morgan 47 not out, R Tripathi 41).