Kohli (67) in the company of AB de Villiers (59 not out) scripted a superb run chase, sharing an 85-run stand to lay the foundation. The RCB skipper blasted eight boundaries, while de Villiers clobbered two sixes and five hits across the rope in his 38-ball innings.
Kohli and De Villiers then did the bulk of the scoring and once the skipper was dismissed in the 16th over, Marcus Stoinis (28 off 16) played a crucial cameo to take the team through with four balls to spare.
With this victory, RCB also avoided the ignominy of most successive losses for a team at the start of an IPL season.
Chasing 174 to win, Parthiv Patel and Kohli gave RCB a flying start, amassing 43 off 23 balls but the left-handed opener was caught by Mayank Agarwal off R Ashwin in the 4th over.
Kohli completed his second fifty of this IPL season in 37 balls but runs dried up a bit in the middle with M Ashwin (24/0) and Andrew Tye (4/40) bowling a tight over each.
Mohammad Shami then gave Punjab a glimmer of hope when over he dismissed Kohli, who pulled one straight to M Ashwin as RCB slipped to 128 for two. But Marcus Stoinis and De Villiers ensured there were no hiccups, sharing 46 runs, as RCB romped home comfortably in the end.
Earlier, Gayle stitched a 66-run opening stand off 38 balls with KL Rahul (18) and kept the scoreboard ticking even though he lost partners on the other end. RCB could have dismissed Gayle in the first over itself when he was hit on the leg by Umesh Yadav but Virat Kohli didn't go for a DRS and the West Indian escaped.
Gayle made RCB pay for the mistake as he hit a four and six off Umesh's next over before Rahul joined the party and smashed a couple of fours off the India pacer in his third over. He needed 10 runs in the last over to complete another century but he fell short by just one run despite hitting the last ball for another four.