Rohit bludgeoned nine sixes and 33 fours from 173 deliveries to emphatically surpass the previous best of 219, scored by countryman Virender Sehwag against West Indies three years ago.
It also saw the 27-year-old opener become the first man to hit two double hundreds in one-day internationals and helped India win the fourth match of the series by 153 runs. The hosts lead 4-0.
“I’m not really tired, I was ready to bat another 50 overs,” said Rohit, caught at long-off from the final ball of the innings. “Once I got to 50, I knew I had to convert because it was a good batting wicket.”
Rohit’s score was four runs short of the record for any 50-over match, set by Surrey’s Alistair Brown in domestic competition in 2002.
Sri Lanka dropped Rohit in the fifth over and twice more later in the extraordinary innings.
All three men to have passed 200 in an ODI innings are Indian, with Sachin Tendulkar joining Rohit and Sehwag in the select group.