Suryakumar Yadav helped Mumbai Indians off to a positive start.
Andrew Tye led KXIP's comeback with the ball, picking up three quick wickets.
Kieron Pollard and Krunal Pandya led MI's fightback with a fine partnership.
Kieron Pollard scored a superb fifty in his comeback game.
R Ashwin picked up a couple of wickets in the death overs to check MI's progress.
Chris Gayle and KL Rahul helped KXIP off to a brisk start in the chase.
Mitchell McCleneghan broke the opening stand by dismissing Chris Gayle.
KL Rahul's steady knock kept KXIP in the hunt while the right-hander bagged the orange cap and became the first to cross 600 runs in this IPL.
Aaron Finch provided KL Rahul good support in a half-century stand for the second wicket.
Jasprit Bumrah accounted for Aaron Finch and Marcus Stoinis in the 17th over to help MI back into the game.
KL Rahul fell at a crucial juncture, getting out to Jasprit Bumrah after scoring 94.
Jasprit Bumrah's excellent bowling in the death was backed up by Mitchell McClenaghan in the final over as MI registered a thrilling three-run win to stay alive.