Opting to bowl first, Kolkata Knight Riders got off to a good start with Umesh Yadav scalping Murali Vijay (0) in the first over of the match.
Things went even bad for Kings XI Punjab as they lost Virender Sehwag, playing his 100th IPL game, and Wriddhman Saha in quick succession.
Glenn Maxwell (33) and George Bailey then steadied the innings with a 63-run stand for the fourth wicket, before Maxwell departed to Umesh Yadav.
KXIP continued to lose wickets in the slog overs, but skipper Bailey fought hard and top-scored with 60 off 45 balls to take his team to 155/9.
KKR spinner Sunil Narine was in his element and bowled a tidy spell giving away just 17 runs in his four overs and was also successful in removing Axar Patel.
In chase of 156, KKR were rocked early by Sandeep Sharma. The swing bowler picked up Robin Uthappa (13) and Manish Pandey (11) cheaply.
Skipper Gautam Gambhir was the fourth batsman out for KKR as the defending champions found themselves in deep trouble at 60 for 4. The wicket of Ryan Ten Doeschate by Sandeep meant KKR lost half their side in side the first eight overs.
Allrounder Andre Russell then resurrected KKR innings with a some lusty blows and brought KKR back in the game.
Russell found support in Yusuf Pathan (28*) and duo put on a match-winning partnership of 95 runs for the sixth wicket, helping their team to a four-wicket victory.