The home team, given a victory target of 281 off 83 overs, ended on 202-7 when bad light brought a premature end with 10.3 overs remaining.
Bravo cracked eight fours off 172 balls in a diligent knock that spanned 285 minutes.
Bravo got valuable assistance from wicketkeeper Carlton Baugh, who contributed an unbeaten 46 in a match-saving, sixth-wicket stand of 69.
Fast bowler Ishant Sharma took 4-53 to complete match figures of 10-108 and earn the man of the match award.
Earlier, India captain Mahendra Singh Dhoni declared midway through the morning session on 269-6 to set up an absorbing fifth and final day.
VVS Laxman fell just short of a century for the second time in the match, falling for 87 to add to his 85 in the first innings.
Fidel Edwards claimed 5-76, his ninth five-wicket haul in his 45th test.
Dhoni wanted to be positive in challenging West Indies with a sporting declaration.
"It was all about asking the batsmen to play some big shots because I felt shot-making was not easy on this wicket," he said.
"I thought maybe if it (the target) was slightly within their reach they would start going after the bowlers and that may give us an opportunity to grab some wickets."
Dhoni bemoaned a late rain shower which halted play for half an hour with West Indies on 181-5.
"My plan was ruined because of the rain because once we came back, the ball got wet and it started coming on nicely to the bat," he added. "Still, we got a couple of wickets that were needed but bad light really spoiled our party."
West Indies skipper Darren Sammy said his team was satisfied by the result even though it had winning thoughts from the start.
"The coach had a chat with the batters and we had a plan. Even down to the last 15 overs we were right on course but we lost too many wickets, hence it pegged us back," he said.
"A draw, we would take that. We still have a chance of leveling the series in Dominica. As long as we didn't lose this game today, I'm quite happy."
India's victory bid began brightly after Dhoni's challenging declaration as they nipped out two West Indies wickets before lunch.
Lendl Simmons and Ramnaresh Sarwan continued their struggles this year and both went cheaply.
Simmons lashed three fours but fell for 14 when his big drive at Sharma was snicked to Rahul Dravid at first slip.
It was soon 27-2 when Sarwan (8) tried to force Praveen Kumar off the back foot and sliced a catch to third slip.
Adrian Barath and Bravo steadied the ship in a stand of 28.
But Barath, after compiling 27 off 66 balls, fell at 55-3 in the second over after lunch. The pint-sized right-hander edged the 1.98m Sharma to Suresh Raina at third slip.
Bravo and veteran Shivnarine Chanderpaul dulled the India spirits for the rest of the second session, taking the hosts to tea safely at 108-3.
Bravo was the more adventurous of the two left-handers, while Chanderpaul was typically obdurate.
Their stand was worth 54 off 173 balls when Harbhajan Singh broke through in the first over after tea.
Chanderpaul, after grafting 113 minutes and 87 deliveries for 12, was given out lbw by umpire Ian Gould even though the ball looked to be hitting the batsman outside off and going past off stump.
When Marlon Samuels played back to an indipper and was plumb leg before to Sharma for 9, India was on top at 132-5 with 29.3 overs still due.
But Baugh rode his luck to survive a testing start and, with Bravo, produced a crucial partnership.
The little right-hander was dropped by wicketkeeper Dhoni off Harbhajan before he had scored and survived a close lbw shout one run later from Sharma.
But he emerged to slam five fours and a six in an unbeaten 46 off 61 deliveries.
Bravo and Baugh looked to have done enough to save the game but after a half-hour rain delay, two swift wickets gave India renewed hope.
Bravo tried to steer Abhimanyu Mithun and edged to Dhoni, while Sammy was Sharma's 10th wicket of the match, plumb lbw to a yorker.
But, by now, the light was fading and Ravi Rampaul faced just one delivery before the umpires called a halt to proceedings.
Earlier, Edwards produced a rousing performance with the second new ball, claiming all three India wickets to fall.
Edwards struck in the second over of the day, removing Virat Kohli for 27. Kohli, omitted from India's test squad for the forthcoming tour of England, chased a wide outswinger and edged to Darren Sammy at second slip.
Laxman's and Kohli's fourth-wicket stand was worth a valuable 78 runs.
Edwards quickly added the wickets of Laxman and Dhoni.
Laxman, who hit eight fours off 188 balls in 260 minutes, tried to steer into the off-side and also deflected to Sammy at second slip.
Dhoni perished for 5, failing to clear mid-off as he lofted a drive.
Suresh Raina (12 not out) and Harbhajan Singh (6 not out) added a further 16 off 20 balls before Dhoni produced his bold declaration.
The third test starts on Wednesday in Roseau, Dominica.