Returning after a 10-week injury layoff, nothing went wrong for Sharma since he was dropped on four, as he paced his innings beautifully before exploding against the hapless looking Lankan attack, smashing 173-ball 264 studded with 33 boundaries and nine sixes here at the Eden Gardens.
In the process, Sharma also broke his compatriot Virender Sehwag's earlier record of 219 runs, which he had set against West Indies in 2011.
Opener Sharma hit Nuwan Kulasekara for four with an elegant cover drive to become the fourth batsman overall to reach the double ton.
It seemed Sharma went into the middle never to return as he was dropped two more times after completing the double century en route to surpassing his previous best of 209 against Australia in Bangalore last year.
Also Read
Sharma batted full 50 overs and got out in the last ball of the innings with Lankan most experienced man Mahela Jayawardene catching him in the long off.
This total also became the highest ODI score at the venue as India bettered their previous best of 317, which was also against Sri Lanka in 2009.
In the middle, stand-in skipper Virat Kohli supported Sharma well with a 64-ball 66 before getting run-out.
Opting to bat, India were 56 for two but Sharma and Kohli looked untroubled by the Lankan attack and the duo put on 202 runs together off 155 balls for the third wicket to take the match away from Sri Lanka.