Nitish Rana (53), Rohit Sharma (40 not out) and Kieron Pollard (39) were the major contributors to Mumbai's cause.
Chasing a challenging total of 177, Mumbai started off on a bad note as the home side lost opener Parthiv Patel (0) on the second ball of the first over.
Parthiv, who got a leading edge, was caught by Jason Roy at backward point off Praveen Kumar while trying to flick the ball on the leg side.
Opener Jos Buttler (26) and incoming batsman Nitish Rana (53) then played sensible innings as both batsmen forged an 85-run partnership for the second wicket before the latter was sent packing in the 10th over with he scoreboard reading 85/2.
In the 12th over, Buttler was also dismissed by medium pacer Munaf Patel. A 24-ball knock, which comprised one boundary and two sixes, was cut short when the 26-year-old tried to pull a short ball from Patel.
Middle-order batsmen Rohit and Pollard then thrashed Gujarat's bowlers all around the park and added 68 runs to give a crucial advantage to their side.
With 17 runs required in the last two overs, Pollard was dismissed by pacer Andrew Tye. The West Indian power-hitter, who hit two boundaries and three sixes, was caught by Ravindra Jadeja between backward point and short third man.
New batsman Hardik Pandya (6) and Rohit then completed the proceeding to give the hosts a fourth consecutive victory in the cash-rich league.
For Gujarat, Andrew Tye took two wickets while Praveen and Munaf chipped in with one wicket each.
Earlier, put in to bat, Brendon McCullum and Dinesh Karthik's crafty knocks helped Gujarat Lions post 176/4.
McCullum played 44 balls and slammed six boundaries and three sixes to get his 64 runs while Karthik slammed 48 runs off 26 balls that helped Gujarat post a decent score.
It was a poor start by Gujarat as the visitors lost their first wicket on the second ball of the innings.
Dwayne Smith (0) was caught by Nitish Rana at backward point off pacer Mitchell McClenaghan with just one run on the board.
Incoming batsman Suresh Raina (28) along with McCullum then stabilised the innings as the two batsmen forged an 80-run partnership for the second wicket.
Just when things seemed going good for the visitors, skipper Raina, who was playing sensibly at the crease by rotating the strike, was sent packing in the 12th over by off-spinner Harbhajan Singh. Raina's 29-ball knock had only two boundaries.
After one over, McCullum was also sent back to the pavilion by experienced pacer Lasith Malinga. While trying to flick on the leg side, the ball sneaked between McCullum's bat and pad and hit the stumps.
With the scoreboard reading 99/3, middle order batsmen Ishan Kishan (11) and Karthik then faced up to the challenge and scored 54 runs in four overs to help Gujarat get past the 150-run mark before Ishan was taken by McClenaghan in the 18th over.
The fall of the wicket brought in Jason Roy (14), who supported Karthik at the other end with some good strokes and thus Gujarat finished at 176/4 in their allotted 20 overs.
For Mumbai, McClenaghan scalped two wickets while Malinga and Harbhajan chipped in with a wicket apiece.
IPL-10: Buttler, Rana power Mumbai Indians to 8-wkt win over Kings XI Punjab
IPL 10: Mumbai beat Gujarat by 6 wickets in thrilling battle
Mumbai Indians script stunning four-wicket win against KKR
Top 10 Batsmen with most Sixes in IPL 2017
Big hits of IPL-10
2 bookies arrested during IPL final, 77 mobiles recovered
David Warner wins IPL 2017 Orange Cap
Ben Stokes won the Most Valuable Player of IPL 2017 Award
IPL 2017: Special Awards
Disappointed to lose in the final says Smith