Munaf, India's World Cup-winning seamer, bowled with great pace and control to account for the wickets of Paul Valthaty (14), Shaun Marsh (43), Dinesh Karthik (31), David Hussey (0) and Ryan Harris (6) as the hosts collapsed to 163 for eight after being at 92 for one at one stage.
On any other night, the 164-run target would have been achievable for this star-studded line-up considering what a good batting wicket it was.
But a steady 19-run partnership for the first wicket was broken when Sachin Tendulkar, the captain, was caught by Marsh off the bowling of Praveen Kumar (2-19).
Praveen, who until then was considered unlucky after nearly having dismissed Aiden Blizzard, Tendulkar's partner, then bowled with purpose to have the Australian caught behind by Adam Gilchrist.
At 27 for two, the Indians never looked like recovering, with all their form batsmen - including Rohit Sharma (5), Andrew Symonds (8) and Ambati Rayudu (13) - departing in quick succession.
It took a few lusty blows off the wood of Kieron Pollard's bat for Mumbai to keep the game going but the damage had already been done. Bhargav Bhatt, then wrapped up the Indians' innings for just 87, the young left-arm spinner claiming four wickets for just 22 runs and the man-of-the-match award.
With the win, Punjab - still ninth in the table - have kept their play-off hopes alive and Gilchrist, the captain, said: "It's a funny world. It can change like this. We have got the foot in that door and hopefully it will keep open. We are back alive."