Bengaluru FC edged Mumbai City FC 9-8 on penalties at the Sree Kanteerava Stadium to enter the Indian Super League final.