Chasing 188, Rajasthan openers Ajinkya Rahane and Buttler got off to a good start, adding 59 in the Powerplay.
Krunal Pandya ended the domination, for a while, as he got Rahane (37) caught at deep midwicket. Buttler with Sanju Samson in the middle recovered well in time to inch closer towards the victory.
Midway through the innings, Buttler hammered Rajasthan, including looting 28 runs off Alzarri Joseph, before Rahul Chahar changed the game. Buttler went for his seventh successive boundary but sliced it to Suryakumar Yadav for 89.
The dismissal of Buttler led to a flurry of wickets - Samson, Rahul Tripathi, Liam Livingstone and Steve Smith before the drama unfolded. With six required off last over, Shreyas Gopal sealed the match and took Rajasthan over the line with three balls to spare.
Earlier, a returning Rohit laid the foundation, scoring 47 in a 96-run stand with Quinton de Kock in Mumbai's 200th match after sent in to bat. The openers set the tone, adding 57, in the Powerplay.
Just when it seemed Rajasthan would have to mentally prepare itself to chase 200 plus total, Jofra Archer sent Rohit back. The Hitman rushed into a pull and gave a comfortable catch to Buttler at long-on.
Mumbai slowed down the middle through the innings, a recurring theme for the team so far this season. Rajasthan, meanwhile, got rid of Suryakumar (16) and big-hitter Kieron Pollard (6), who played uncharacteristically slow knock.
Hardik Pandya came out to support De Kock to push the target to a par score, but Buttler's screaming catch ended the chief contributor De Kock's 52-ball 81 innings off Archer. In the last over, Hardik (11-ball 28*) unleashed the helicopter shot to Jaydev Unadkat to lift Mumbai to 187/5.
Mumbai will next play against Royal Challengers Bangalore on April 15, whereas Rajasthan will clash with Kings XI Punjab on April 16.
(This story has not been edited by Business Standard staff and is auto-generated from a syndicated feed.)