Suryakumar Yadav's unbeaten half-century guided Mumbai Indians into a fifth Indian Premier League final as Chennai Super Kings were consigned to a six-wicket defeat.
Defending champions Chennai could only post 131-4 on a surface that had the spinners rubbing their hands together at MA Chidambaram Stadium on Tuesday.
Rahul Chahar (2-14) generated sharp turn as the Super Kings were reduced to 32-3, before Ambati Rayudu (42 not out) and MS Dhoni (37no) did their best to get the holders up to a respectable total.
Three-time champions Mumbai – who finished top of the table at the end of the regular season - lost both openers cheaply in reply but made it through to the decider in Hyderabad on May 12.
Yadav made 71 not out from 54 balls to get the 2017 champions home with nine balls to spare, two wickets in as many balls from Imran Tahir (2-33) coming too late in the day for Chennai.
The Super Kings will have another chance to qualify for the final when they take on the winner of the clash between Delhi Capitals and Sunrisers Hyderabad on Friday.
SUPER KINGS LEFT IN A SPIN
Dhoni did not get the start he was looking for after winning the toss and they were in trouble at the end of the mandatory powerplay.
Unsurprisingly, it was spin that did the early damage, Faf du Plessis slapping Chahar's first ball straight to substitute fielder Anmolpreet Singh at point and the in-form Suresh Raina following in the next over.
Krunal Pandya got in on the act by removing Shane Watson and the Super Kings were 65-4 in the 13th over when Murali Vijay (26) was stumped when beaten by a sharply turning delivery from Chahar.
Dhoni struck Lasith Malinga for back-to-back sixes as he and Rayudu attempted to inject some impetus with a stand of 66, but boundaries were hard to come by on such a tricky surface.
EARLY STRIKES OFFER HOPE
Deepak Chahar struck with the second ball of the run chase after watching his cousin do the damage in the first innings, trapping Rohit Sharma leg before.
Harbhajan Singh got in on the act by seeing the back of the dangerous Quinton de Kock, reducing their opponents to 21-2 in the fourth over.
Yadav and Ishan Kishan prevented more damage being done with a crucial third-wicket stand that put Mumbai well on course for victory.
TOO LITTLE, TOO LATE FROM TAHIR
Mumbai were coasting until Tahir ended the 80-run partnership by bowling Kishan (28) - the leg-spinner then immediately getting Krunal Pandya caught and bowled first ball to round out the 14th over.
Yadav was unperturbed by the losses at the other end, however, bringing up a half-century off 37 balls. He hit his 10th boundary to level the scores before sealing victory in the penultimate over.