In a match that went right down to the last ball, Mumbai registered a one-run victory in front of packed stands at the Rajiv Gandhi International stadium.
This is Mumbai's third IPL title.
Chasing a target of 130 runs, Pune could only manage to post 128/6 in their 20 overs.
Australian fast bowler Mitchel Johnson was the most successful for Mumbai with figures of 3/26, while young pacer Jasprit Bumrah also played a crucial role, returning figures of 26/2 in four excellent overs.
Veteran Sri Lankan pacer Lasith Malinga also bowled well and was unlucky not to manage a wicket. He conceeded just 21 runs in his four overs.
Pune skipper Steven Smith led from the front scoring a fighting half-century in a losing cause.
He notched up 51 runs off 50 deliveries with two boundaries and an equal number of sixes before falling in the last over.
Pune started off on a shaky note when Bumrah trapped Rahul Tripathi leg before.
Ajinkya Rahane and Smith tried to rebuild the innings with a 54-run partnership before Kieron Pollard pulled off a superb catch at long on to send the captain back to the pavilion.
With the Mumbai bowlers maintaining a tight line, Mahendra Singh Dhoni and Smith found the going tough and could only add 27 runs between them in as many balls.
Dhoni scored 10 runs in 13 balls before falling to a poor shot in the 17th over, slashing a Bumrah delivery which was slightly outside off-stump but only managed an easy top edge to wicket-keeper Parthiv Patel.
His departure seemed to put the pressure on the Pune batsmen.
Malinga conceded just five runs in the 18th over and Bumrah bowled another miserly over in the 19th to put pressure. With 11 runs needed off the final over, Manoj Tiwary started with a boundary to square leg off Johnson but an attempted smash into the stands off the very next ball saw him caught at long on by Pollard.
Smith fell on third ball, caught by Ambati Rayudu at the cover boundary.
Two runs came off the next ball but with four needed off the last ball, Daniel Christian was run out sending the Mumbai players into wild celebrations.
Earlier, braces by bowlers Jaydev Unadkat, Adam Zampa and Christian enabled Pune to restrict Mumbai to 129 for eight.
Mumbai's top and middle order batsmen put up a horrific show against the disciplined bowling from Pune and the former were left reeling at 79/7 in the 15th over. All-rounder Krunal Pandya's 47 off 38 deliveries pulled Mumbai out of the hole.
Opting to bat, Mumbai had a disastrous start as left-arm medium pacer Unadkat (2/19) removed Parthiv Patel (4) and Lendl Simmons (3) in the third over, reducing them to 8/2.
Mumbai skipper Rohit Sharma (24) and Rayudu (12) then weathered the storm briefly but the Pune bowlers continued to keep it tight. Young off-spinner Washington Sundar continued to be impressive, giving away only 13 runs in his four overs.
The partnership lasted for 33 runs as Rayudu was caught short of the crease while taking a single in the eighth over.
Mumbai's batting ran into further trouble when Rohit and Pollard (7) fell to Australian leg-spinner Zampa (2/32) in the 11th over to be left at 65/5. Rohit pulled a half-pitched ball to Thakur at deep mid-wicket, while Pollard offered an easy catch to pouch for Tiwary at long-on.
After Zampa, Christian (2/34) removed all-rounder Hardik Pandya (10) in the 14th over, while in the next, Karn Sharma, a handy low-order batsman, was run out at 1, to leave Mumbai at 79/7.
Later, Krunal and Mitchell Johnson (13 not out) shared a strong 50-run partnership to take Mumbai to 129/8.
120 mn people engage in 500 mn interactions on Instagram during IPL
Kieran Pollard hails Mumbai team's character after IPL triumph
IPL 2017: Special Awards
Mumbai beat Pune to win IPL
Mumbai beat Pune in the final, lift IPL title for third time
Mumbai post 129/8 in IPL 2017 Final
Special Gift for Jonty Rhodes
Mumbai Indians opt to bat in IPL 2017 Final
We deserve to be in the final ,says MI skipper Rohit Sharma
Pune Supergiant stand between Mumbai Indians and third IPL title