Indian seamers Ishant Sharma and Umesh Yadav ran through the Bangladesh tail picking up wickets in quick succession in the first session on Day 3 to wrap up the encounter in front of jam packed crowd at the Eden Gardens.
Resuming on their overnight score of 152-6, Bangladesh lost Ebadat Hossain after Umesh scalped him for a duck. The visitors then suffered a major blow as their well settled wicket-keeper batsman Mushfiqur Rahim was dismissed by Ishant after the glovesman played a rash shot. Umesh dealt the final blow by Al-Amin Hossain.
India ended Day 2 on commanding position after reducing Bangladesh to 152-6 in their second innings. After India posted a mammoth 347-9 in their first innings to take a commanding 241-run lead in the match, Ishant bowled a terrific spell to dent the Bangladesh top order with three early strikes.
He dismissed opener Shadman Islam, skipper Monimul Haque and Imrul Kayes . Umesh Yadav was lethal from the other end, picking up five wickets in the match.
Earlier, Kohli slammed a magnificent 136 and added 99 runs with his deputy Ajinkya Rahane who fell for a fluent 51. On Day 1, Cheteshwar Pujara also struck a similar 55.
The India captain cover-drove Ebadot Hossain to reach 99 and, with the crowd chanting his name, took two off spinner Taijul Islam to bring up his 27th test century, and 20th as captain.
Kohli equalled former Australian great Ricky Ponting's record of 41 international centuries as captain. With the century, the 31-year-old also surpassed Ponting's tally of 19 Test tons as skipper.
The talismanic batsman, who now has back-to-back tons at Eden Gardens with the last coming against Sri Lanka in 2017, took 159 balls to get to his century.
Kohli shifted gears after getting to his hundred and hit Abu Jayed for four consecutive fours before Ebadat removed him with Taijul moving from deep square leg and hurling himself into the air to take a stunning catch.
Kohli hit 18 fours in his 194-ball vigil, which was more than the entire Bangladesh team who had folded in 30.3 overs in their first essay.
In Bangaldesh's first dig, opener Shadman Islam was the highest scorer with 29 as only three batsmen crossed double figures. Ishant ran amok as Umesh grabbed three and Mohammed Shami snared two.
Bangladesh have had to call two concussion substitutes after Liton Das and Nayeem Hasan sustained nasty blows to the helmet in the first innings and Mohammad Mithun also took a knock due to visibility being an issue under lights. Mushfiqur too was hit on the helmet.
Seamer Ishant Sharma won the man of the match and player of the series for his splendid bowling effort all through the series.
Brief scores: Bangladesh 106 & 195 (Mushfiqur Rahim 74; Umesh Yadav 5/53, Ishant Sharma 4/56; India 347/9d (Virat Kohli 136, Cheteshwar Pujara 55, Ajinkya Rahane 51) won by an innings and 46 runs.