Chasing a competitive target of 188, RCB ended at 181 for five, with the umpire failing to notice a big no-ball by Lasith Malinga off the final delivery.
RCB had seemed on course to overhaul the target as skipper Virat Kohli laid the foundation with a 32-ball 46 (6x4) which included a 49-run association with de Villiers. The skipper, looking to steer the side home, however, departed against the run of play with RCB still needing 72 off 38 balls.
South African de Villiers (70 not out, 41b, 4x4, 6x6), dropped off the first ball at slip by Yuvraj Singh, then took charge to send the Chinnaswamy Stadium crowd into a frenzy. With fans chanting “ABD, ABD”, the maverick first sunk into Malinga, hammering him for a boundary and two sixes to take 20 runs in his over and bring the equation down to 41 off 24.
De Villiers then upped the ante in the 18th over, cracking Hardik Pandya also for a boundary and two maximums as RCB were left needing 22 off 12 balls. The match, and momentum, at that stage looked completely with RCB but death-over specialist Jasprit Bumrah bowled a brilliant penultimate over, giving away just 5 runs and bagging one wicket.
Malinga was then entrusted with the task of defending 17 in the last over. Shivam Dubey carted him for a six but the Sri Lankan kept his cool thereafter to help MI register their first win. The climax though was controversial as TV replays showed Malinga had over-stepped in the last ball. With RCB needing 7 and a free-hit available, one wonders what could have happened.
Earlier, Mumbai Indians, put into bat, rode on a sizzling start and a stunning finish to post an extremely competitive total. In-form South African Quinton de Kock (23, 20b, 2x4, 1x6) and skipper Rohit Sharma (48, 33b, 8x4, 1x), went about their business right from the word go.
Yuzvendra Chahal (4/38) did peg back Mumbai as they slipped to 147 for seven in 17.1 overs. But Hardik Pandya pulled off some audacious shots and his 14-ball 32 (2x4, 3x6) eventually proved the difference maker.