The talismanic Sunil Chhetri scored in the fourth minute of added time towards the end of the match, to take his tally to nine this season, as the visiting Bengaluru earned an important victory.
It was sweet revenge for BFC having lost 0-1 at home to the former champions.
The win takes Bengaluru to 30 points from 14 games while Chennaiyin stay on 23 but has played one match less.
The penalty came about after Harmanjot Khabra fouled Dhanpal Ganesh inside the box and the referee pointed to the spot.
More From This Section
In the 71st minute, Chennaiyin skipper Henrique Sereno was sent off, after what appeared to be an unnecessary challenge. He had won an aerial challenge against Miku, but then pulled him down from behind for no reason.
The visiting side went ahead in the 63rd minute when Miku slotted in from close range, tapping in after a miss from the Chennaiyin custodian Karanjit.
Dimas Delgado chipped it in the box on the left side and Chhetri shot the volley first time with his left foot. The keeper saved, but couldn't do so cleanly and allowed Miku to poke it across the line.
The first half was a rather entertaining one with both sides going all out. Bengaluru's early strike was cancelled out by the host team.
Boithang Haokip opened the scoring in the 2nd minute, which seemed to stun Chennaiyin FC.
The men in blue bounced back from the early setback and fought on an even footing, launching some fast-paced attacks. Eventually, the equaliser came in the 33rd minute through a superb Francisco Fernandes header.
It was an action-filled first half with Chennaiyin having the better of the exchanges which didn't show on the scoresheet.