Passi scored with a diving header in the 89th minute to be declared the man of the match.
The two teams will meet in the second leg clash in Goa on May 4.
The first half of the play was largely insipid with both teams unable to force the pace.
Subash Bose of Sporting and Sushil Kumar Singh of MFC, who was substituted by Ryuki Kozawa midway through the second half, were booked for fouls.
More From This Section
He first blocked a close range volley by Steven Dias and the ball rebounded beyond the penalty area where Eric Brown uncorked a pile driver which was again saved by Bhattacharya.
The match-winner was notched by Passi against the run of play. A snap counter saw substitute Victorino Fernandes sending a low cross from the right, which was headed in with a forward dive by Passi.
Sporting clearly missed their injured main striker Odafa Onkolie.