Bangladesh captain Mushfiqur Rahim had also hit a sparkling ton to help the hosts post a challenging 279 for seven after being asked to take first strike.
While Rahim's excellent knock went in vain, Kohli's effort resulted in victory of his team, which has copped a lot of criticism of late for their pathetic performance overseas.
Courtesy Kohli's 19th One-day hundred India recovered well after cheap dismissal of the openers Shikhar Dhawan (28) and Rohit Sharma (21) and overhauled the target with six balls to spare. It was India's first win in the 2014 calender.
His 136-run knock came off 122 balls with 18 boundaries, including two sixes while Rahane took 83 balls for his innings which had seven fours and a six.
Also Read
The only blot in Kohli's innings was when on 35 he flicked uppishly at square leg but fielder Rubel could not reach out to the ball.
Rahim had led from the front with a gritty 113-ball 117 and that century came after he took a nasty hit on his ribs by a Varun Aaron beamer.
The clinical win should also give India a big relief after their embarrassing defeats against New Zealand. They also avenged their last defeat to Bangladesh that cost them a final place in 2012 Asia Cup, also held here.