Sanga made a solid 128 and shared a 153-run stand with Mahela (71) to revive the Lankan innings after they suffered early blows.
The fiesty Lankan southpaw hit 12 boundaries in his 155-ball knock before conceding his wicket in the penultimate over of the innings
Indian seamers bowled to a probing line early on but failed to dent the steely resolve of Sanga-Mahela after the batsmen slipped into groove.
Lanka, electing to bat first, slumped to 2 for 6 in the third over.
Tillakaratne Dilshan (4) kicked off Lankan innings with a first ball boundary, but the opener was back in the shed three balls later when he edged Munaf thro' to wicketkeeper Dhoni.
Things soon went from bad to worse for the Islanders when Patel managed to get a fingertip to a straight drive by Sangakkara and the ball deflected into the stumps at the non-striker's end, finding Sanath Jayasuriya short of his crease.
The double blow took its toll on the run-rate as Sri Lanka crawled to 2-21 after 10 overs, with Sangakkara and Mahela careful not to throw away their wicket.
The duo build up their innings nicely milking the ball in the gaps for singles and twos before opening up the arms in the later part of their innings.
Sangakkara was lucky to survive on 18 when he called a quick single and Yuvraj Singh clipped the top of the stumps with the fiesty southpaw just short of his crease. But to Sanga's fortune, the bail took a while to fully dislodge, allowing enough time for the batsman to sneak safely home.
However Mahela's superb knock ended in a bizarre fashion when the straight drive of Sanga hit bowler Praveen's foot en route to the stumps with skipper found short of his crease. Mahela, who was not in a pink of form, played a timely innings that did a world of good to himself and his side.
Munaf, Pathan and Harbhajan claimed one wicket apiece.
Sri Lanka 238/6 in 50 overs (Sangakkara 128, Jayawardene 71; Munaf 1 for 38, Pathan 1 for 44, Harbhajan 1 for 54) Vs India.