Chasing 163 runs to win, Mumbai stumbled in the chase as they were restricted for 142/9. Along with Sundar, Shardul Thakur picked three wickets as Pune are all set for their maiden appearance in the IPL final.
Parthiv Patel scored a fine half-century but that was not enough as the rest failed to fire. Mumbai will now travel to Bangalore and have got another chance to enter the final.
Mumbai started well with both Parthiv and Lendl Simmons giving them a strong start. However, Shardul Thakur dismissed Simmons against the run of play to give Pune the breakthrough.
Parthiv hit the ball straight and Thakur managed to get his fingers brush the ball as it hit the stumps with Simmons clearly out of the crease.
Sundar then spun magic as he dismissed Rohit Sharma, Ambati Rayudu and Kieron Pollard in quick succesion to give Pune a fighting chance.
Lockie Ferguson then removed Hardik Pandya as Thakur returned to pack off the lower order including the prized scalp of Parthiv.
With Mumbai clearly under the pump, Pune further tightened screws to earn themselves a place in the final.
Earlier, Pune rode on fine half-centuries from Manoj Tiwary and Ajinkya Rahane to post 162/4.
Tiwary showed his class when the situation demanded, smashing a 48-ball 58, but more importantly putting on two important half-century stands to help the visitors recover from a precarious 9/2 after the second over.
The Bengal right-hander first added 80 runs for the third wicket with Rahane, who scored a 43-ball 56 before stitching an undefeated 73-run fourth wicket stand with former skipper Mahendra Singh Dhoni (40 off 26) to take the side to a healthy total.
Put in to bat, Pune were off to an unforgettable start losing the in-form Rahul Tripathi (0) and Steve Smith (1) in the opening two overs before Rahane and Manoj steadied the ship on a tricky Wankhede track.
New Zealand pacer Mitchell McClenaghan drew first blood for the hosts, cleaning up Tripathi for his first duck of the IPL, on the last ball of the opening over before a leading edge off Sri Lankan Lasith Malinga got skipper Smith walking back.
With the visitors in desperate need of a partnership, Rahane and Manoj got their act together helping the odd ball to the boundary as Mumbai maintained a perfect line and length, without allowing any freebies.
The right-handed pair went on to add 50 runs off 44 deliveries with Manoj playing the perfect second fiddle to the local boy Rahane, who got to his half-century off 39 balls.
Just when things began to fall in order for Pune, leg-spinner Karn Sharma jolted the visitors, by trapping Rahane, who by now had helped the ball to the boundary on five occasions and once over it.
The fall of Rahane brought in Dhoni who, along with Manoj, played out five overs inconsequentially before the Bengal batsman took the attack to the opposition.
Continuing his fine run with the willow, Manoj first slogged at a good length ball off McCleneghan to get to his half-century off 45 deliveries before taking the bowler to the cleaners. Dhoni too joined the party, clearing the Kiwi twice in the penultimate over.
Mumbai skipper Rohit Sharma threw the ball to his death-over specialist Jasprit Bumrah for the final over, but with Dhoni at his attacking best, young Bumrah was clobbered twice out of the park as the final two overs yielded 41 runs for Pune.