The Indians had been in danger of being cut adrift of the play-off qualification places after six defeats in nine matches, but Sunday's narrow success gives them hope.
Pandya played a crucial role for Rohit Sharma's men with an unbeaten 35 as they posted 181-4 from their 20 overs.
The all-rounder then returned figures of 2-19 from his four overs as Kolkata came up just short, despite a valiant effort from Dinesh Karthik.
A 91-run opening stand between Suryakumar Yadav (59) and Evin Lewis (43) set the Indians on their way, the pair peppering the boundary in the opening power play.
Pandya's 35 off 20 balls helped lift them to a total that proved too much for Kolkata – who toiled in the middle of their reply.
Robin Uthappa (54) and skipper Karthik tried in vain to keep them in touch but the latter was left stranded on 36 as Mumbai recorded back-to-back wins for the first time this season.
KOLKATA'S MUMBAI MISERY CONTINUES
Kolkata must have gone into Sunday's clash thinking this was their chance to finally beat Mumbai, but their barren run goes on.
The Knight Riders have lost the last seven meetings between the two franchises, a run that stretches back 1,125 days to April 2015.
KKR - 168/6, 20 Overs
PANDYA PROVES KEY
Pandya came to the crease with Mumbai well positioned on 106-2 and quickly set about the Kolkata attack, hitting Piyush Chawla for six over long-off on his third ball.
The boundaries continued to flow for the number four despite Mumbai stuttering slightly, a final maximum coming as Sunil Narine watched the ball soar over his head late on.
Narine got his revenge straight after, but the damage was done.
With the ball Pandya removed opener Shubman Gill cheaply, before halting Nitish Rana's onslaught with six overs to play.