The 33-year-old former India captain achieved the total when reaching 33 with a quick single off fast bowler Dilhara Fernando before being dismissed for 51. It was his 272nd one-day game. Ganguly was returning after a four-match ban for slow over rates.
Others to have passed 10,000 runs are Ganguly's countryman Sachin Tendulkar, and the Pakistan captain Inzamam-ul-Haq.
Ganguly was prevented from celebrating a victory as Sri Lanka won by four wickets to confirm their place in next Tuesday's final. India have to beat West Indies on Sunday to join them.
* Inzamam has asked England to review their decision not to play a Test in Karachi later this year. England are due to tour Pakistan from 26 October for three Tests and five one-day internationals. They will play only a one-dayer, in Karachi in December for security reasons.
Inzamam said: "When India played no untoward incident took place."Reuse content