The 24-year-old right-arm pace bowler used the conditions well to pick up 4 for 24 in 21.3 overs bowled in four spells after Saurashtra were asked to bat first on a seam-friendly track by Mumbai captain Ajit Agarkar.
Kulkarni, who grabbed five wickets in the semi-final against Services at Delhi, and rookie left-arm spinner Vishal Dabholkar had Saurashtra on the ropes at 51 for five before lunch with the medium pacer picking up three of those wickets.
The visitors recovered a bit through a 64-run stand between top-scorer Arpit Vasavada, who made 55 with nine fours, and Kamlesh Makwana (26).
But once these two batsmen fell to Abhishek Nayar in successive overs close to tea break, the Saurashtra innings went into a slump once again before they were dismissed for 142 with Kulkarni dismissing the last man Sidharth Trivedi for his fourth wicket.
Nayar and Dabholkar gave good support to Kulkarni by bagging two wickets apiece, Agarkar secured one while Jaydev Unadkat was run out foolishly.
Apart from Vasavada, who batted for 210 minutes and faced 146 balls, Sitanshu Kotak (14), Makwana and Unadkat (22) reached double figures as the Saurashtra batsmen showed lack of application and skill on a bowler-friendly track.
In reply, 39-time title winners Mumbai scored 19 for no loss in 8 overs. Openers Wasim Jaffer (11 in 30 balls) and Kaustubh Pawar (4 in 20 balls) batted for 39-minutes and were at the crease with the hosts still 129 runs behind.
Earlier in the morning session, Saurashtra batsmen struggled on a pitch that afforded seam movement and soon lost half their side cheaply.
They recovered partially only to lose two wickets in quick succession, close to tea, that left them struggling at 115 for 7 with a tail that failed to wag.
Poor application cost Saurashtra most of the wickets though the Mumbai new ball bowlers were not steady in their line of attack and often bowled wide in the first hour.
The first to go was opener and 'keeper Sagar Jogiyani, who backed away to leg and then poked his bat out to snick to second slip Wasim Jaffer and give medium pacer Kulkarni the first of his four wickets in the bowler's opening over.
One-down Rahul Dave played awkwardly to a ball dug in by Kulkarni and ballooned a catch to Ankeet Chavan in the slip cordon as Saurashtra slipped to 12 for 2.
At the other end, veteran Kotak was at his usual watchful self in making a slow 14. But he could not resist a ball bowled wide of his off stump by rookie left arm spinner Dabholkar, and while trying to glide it past lone slip fielder Jaffer, only to put up a tame catch to the fielder.
The visiting team lost two more wickets - Sheldon Jackson (5) and captain Jaydev Shah (0) - just before lunch as Saurashtra slumped to 51 for 5.
Post lunch, the first hour of play was the most fruitful for the visitors as left-handed Vasavada and Makwana took the total to 90 without being separated.
The duo raised the 100 of the innings in the 51st over and the 50 of their sixth wicket stand when Makwana drove Ankeet Chavan handsomely to the cover fence.
Vasavada, who played well square off the wicket on the off side, completed his 50 off the 139th ball he faced in 203 minutes before getting out to a poor shot.
Nayar, considered as Mumbai's partnership breaker, lived up to his reputation by breaking the sixth wicket stand when he tempted Vasavada to chase a ball that was angled away and edge it to first slip fielder Hiken Shah.
Vasavada's partnership with Makwana came in 151 balls. He fell 15 minutes to tea and his sixth wicket partner Makwana too departed in the last over before the end of the second session by slashing at a wide ball from Nayar and was caught at gully.
These two wickets in successive overs of Nayar pegged back Saurashtra just when they seemed to be recovering from their morning collapse.
The two batsmen were dismissed by Nayar, Mumbai's leading scorer with the bat in the season, with his slow medium bowling in the space of 9 balls and he had fine figures of 5-1-9-2 in his second spell.
The second-best partnership of the innings i,e the 8th wicket stand between Saurav Sanandiya and Unadkat yielded 26 runs before the former's defence was breached by Agarkar.
A run later Test discard Unadkat (22) was run out going for a sharp single with the bat held high in hand. The throw from Dabholkar, who was at point, directly hit the stumps with Unadkat's raised leg and bat well past the crease to leave Saurashtra at a dismal 142 for 9.
Kulkarni came back for his fourth spell and ended the innings when he snapped up the wicket of last man Trivedi who edged behind the stumps.
In the morning, Mumbai retained the eleven that got past Services in the semi final at Delhi while Saurashtra brought in medium pacer Saurya Sanandiya for off spinner Vishal Joshi in the only change effected in their semi final team that got past Punjab at Rajkot.