With nine points from two matches, West Indies are in with a bright chance of making it to the finals.
Roach (14 no) kept his cool as he flicked Umesh Yadav (3/43) towards square leg to bring up the victory in a match where fortune swung like a pendulum.
The foundation of the victiry was laid by opener Charles who faced 100 balls hitting eight boundaries and four huge sixes. He added 116 runs for the fourth wicket with Darren Bravo (55) and the victory didn't look out of sight.
Credit to Indian bowlers who made a fantastic comeback as they got some quick breakthroughs including to come right back into the match before Roach finally sealed it for the hosts.
At the start of the chase, West Indies were in dire straits as they lost both Chris Gayle and Marlon Samuels within the first five overs as they were precariously placed at 26 for three.
Yadav removed opposition's best batsman Gayle (11) and followed it up with wicket of Devon Smith (0) while Bhuvneshwar Kumar bowled Samuels (1) to reduce West Indies to 26 for three.
Gayle was dismissed as a delivery from Umesh rose awkwardly and it hit the upper portion of his bat. The resultant catch was taken by Suresh Raina stationed at short cover.
In his next over, Yadav removed left-hander Smith with an inswinger while Samuels dragged one from Kumar back onto his stumps.
Opener Charles however batted positively. The first six scoring strokes were boundaries as he punished both Yadav and Kumar. With minimum backlift and least footwork, Charles successfully hit through the line whenever it was slotted in his zone. He found an able ally in Bravo as the duo resurrected the innings.