Medium-pace bowler Sandeep Sharma took 5-18 to help restrict Mumbai to 179-9
India made two changes from the side that lost to New Zealand by 200 runs in the opening match, replacing Yuvraj Singh - down with dengue fever - and Abhimanyu Mithun with batsman Virat Kohli and paceman Ishant Sharma.
Sri Lanka, who beat New Zealand by three wickets in the previous match, brought in paceman Dilhara Fernando and spinner Suraj Randiv in place of Rangana Herath and Ajantha Mendis.
Each side will play the other twice in the preliminary league before the top two qualify for the final on August 28.
Sri Lanka: Kumar Sangakkara (capt), Upul Tharanga, Tillakaratne Dilshan, Mahela Jayawardene, Angelo Mathews, Thilan Samaraweera, Chamara Kapugedera, Suraj Randiv, Nuwan Kulasekera, Dilhara Fernando, Lasith Malinga.
India: Mahendra Singh Dhoni (capt), Dinesh Karthik, Virender Sehwag, Suresh Raina, Rohit Sharma, Virat Kohli, Ravindra Jadeja, Praveen Kumar, Ashish Nehra, Pragyan Ojha, Ishant Sharma.
Umpires: Ranmore Martinesz (SRI) and Simon Taufel (AUS)
TV umpire: Tyron Wijewardene (SRI)
Match referee: Alan Hurst (AUS)
Medium-pace bowler Sandeep Sharma took 5-18 to help restrict Mumbai to 179-9
The former India captain was furious with the third umpire's decision and argued with the on-field umpire before walking off the field
Travus Head, the Australian left-hander, has amassed 324 runs with a mind-boggling strike rate of 216
New Zealand are missing several top players due to the Indian Premier League
Gujarat Titans won a low-scoring game by three wickets
The UAE booked their place in the 2025 Asia Cup which will feature Test-playing teams India, Pakistan, Sri Lanka, Bangladesh and Afghanistan
The drama did not help Bengaluru in their chase as the bottom-placed side in the 10-team table slumped to their seventh loss in eight matches
Muhammad Waseem led from the front with a sparkling hundred