Pune should have chased down Mumbai's 120 for nine considering the batting conditions at the Subrata Roy Sahara Stadium but ended at 119 for six.
Mithun Manhas' unbeaten 42 went in vain as the hosts failed to get 12 runs off the last over bowled by Munaf Patel (1-24). Fast bowler Lasith Malinga (2-25) got the important breakthroughs once again while Harbhajan Singh (2-18) came back to form with a tidy spell.
Mumbai are now third in the points table with 16 points from 10 games while Pune are lying at eighth place after four losses in a row. They now have eight points from 11 matches.
Pune let the Mumbai bowlers dictate terms by going on the defensive in the run-chase.
Harbhajan struck early to put pressure on Pune, removing the dangerous Jessy Ryder (9) and Michael Clarke (14) to make it 44 for three in the ninth over.
Sourav Ganguly (16) then played second fiddle to Manhas and took the team closer to the total. But Malinga, as he often does, broke the 47-run stand for the fifth wicket by castling the stumps of the Pune skipper.
The home team needed 18 off the last 12 balls and it was again Malinga, who made the difference, giving away just fours runs in the over besides sending pack Wayne Parnell (2).
Earlier, Mumbai failed to capitalise on a good start provided by Sachin Tendulkar (34) and James Franklin (25), who shared a 50-run stand at the top.
Tendulkar's dismissal in the 12th over triggered the collapse as the next fours wickets fell for 12 runs, leaving Mumbai at 93 for 7.
Most batsmen got out playing lost shots in an innings that included four run outs.
Nehra (2-19), who has proved expensive in the tournament, gave away only five runs after leaking 14 runs in his first over and also picked up the important wicket of Tendulkar.