Sachin Tendulkar was once again denied a 100th international century, however Rahul Dravid did reach three figures to ensure India made a promising start to the second Test against West Indies at Eden Gardens.
Leg-spinner Devendra Bishoo reduced the Kolkata crowd to silence when he dismissed Tendulkar for 38 on day one, but Dravid continued his fantastic form with 119 as the hosts reached stumps on 346-5.
Dravid has now scored more runs than anyone else in the calendar year, his 36th Test century seeing him leapfrog Ian Bell as the top run-scorer in 2011.
But West Indies can take some momentum into the second day after removing Dravid and nightwatchman Ishant Sharma in the final two overs before stumps.
India made an impressive start after captain Mahendra Singh Dhoni won the toss in perfect batting conditions, with Virender Sehwag in typically aggressive mood, hitting two fours in the second over - though he was then struck on the head by Fidel Edwards.
He and Gambhir brought up their 50 partnership inside the 11th over with another Sehwag boundary - and he added two more from the next two deliveries to reach 38 from 30 balls.
He failed to add to that total, though, as he heaved Darren Sammy - whose first three overs had gone for 29 runs - straight to short midwicket where Adrian Barath took a sharp low catch.
New man Dravid made a fluent start, taking two from his first ball and guiding his third to the third-man boundary before taking three more fours from Sammy's next two overs.
Gambhir reached his half-century, his first against the Windies, with a leg-side single off Marlon Samuels from his 78th delivery.
However, he could not turn that into three figures after falling for 65 in disappointing fashion when he slashed an Edwards delivery straight to Barath at short cover.
That dismissal brought Tendulkar to the crease and the 38-year-old, who has remained stuck on 99 international hundreds since the World Cup in March, started in steady fashion and gradually inched closer to that elusive century as he helped Dravid put on 56 runs for the third wicket.
It was not to be for Tendulkar in this innings though as, just before the tea interval, he pulled a rank long-hop from Bishoo straight to Samuels at midwicket.
Despite the dismissal, India still held the upper hand going into the tea break with Dravid bringing up his half-century and remaining on course to become only the second player to reach 13,000 Test runs.
The veteran right-hander started the match needing 140 more runs to reach that milestone and he and VVS Laxman kept the scoreboard ticking over at a healthy rate after tea.
After helping the home side past 300, Dravid then brought up his 36th Test century and fifth in 2011 by tucking Kemar Roach off his pads and away to the square-leg boundary.
The 100 partnership for the fourth wicket came up soon after and Laxman continued the procession of milestones by reaching 50 with a couple more off Bishoo (1-87).
But, just as it seemed India would reach stumps three wickets down, Dravid was bowled off the under-edge to hand Kraigg Braithwaite his first Test scalp and Roach (1-57) removed Ishant first ball.
Laxman will resume day two unbeaten on 73.