Kohli eased his way to an unbeaten 191 while Ajinkya Rahane justified the faith shown in his abilities by the team management with a crisp 82 off 133 balls as the duo added 222 in little under 50 overs.
India smashed 121 runs in the opening session of the second day in 31 overs losing a single wicket.
The Indian skipper now has 22 boundaries to his credit in 230 balls. Rahane missed out on a century with young Mehedi Hasan Miraz taking a spectacular one handed diving catch off left-arm spinner Taijul Islam. The Mumbaikar hit 11 boundaries in his innings.
A couple of more boundaries off Taskin and a lofted boundary off Shakib Al Hasan brought about his 150.
More From This Section
Rahane, who had gained in confidence from yesterday's time at the crease was more assertive today. His 50 came when he dispatched a full toss from Shakib to the cow corner. It was his 10th Test half century.
Just when he was looking good for a hundred, it was Miraz who pulled off a spectacular catch as the batsman had played an inside out shot.
But there was no stopping Kohli as he continued to send the Bangladeshi bowlers with a deluge of boundaries before a successful DRS appeal saved him.
On 180, he was adjudged leg before by the on-field umpire after a delivery from Miraz spun sharply hitting him low on the pads. However the skipper promptly took DRS consulting his partner Wriddhiman Saha and got a favourable decision.