India cruised to 171 for four from 34.3 overs and took home a bonus point after Sri Lanka, who elected to bat, were dismissed for 170 in 46.1 overs.
Sehwag started off cautiously before cutting loose. He hit 11 fours and two sixes in his 100-ball knock, while Mahendra Singh Dhoni [ Images ] was also unbeaten on 23 from 38 balls.
Sri Lanka played spoilsport, as Suraj Randiv [ Images ] deliberately overstepped the bowling crease with what was the final delivery of the match to bowl a no-ball and deny Sehwag a well-deserved century.
India found themselves in trouble after losing three wickets for two runs in the space of 11 deliveries. Virat Kohli [ Images ] and Rohit Sharma [ Images ] fell for ducks as India were reduced to 32 for three in the 11th over before Sehwag single-handedly took them to victory.
Earlier, the Indian bowlers came up with a disciplined performance to dimiss Sri Lanka for a paltry 170 in 46.1 overs. Randiv was the final wicket to fall; he was caught in the covers off Pragyan Ojha [ Images ] after a valuable innings of 43 from 61.
All the frontline Indian bowlers chipped in with wickets to put the team in control. Ojha was the most successful, claiming three for 36 in 9.1 overs, while Praveen Kumar [ Images ] (two for 20), Ishant Sharma [ Images ] (two for 32), Ravindra Jadeja [ Images ] (two for 34)and Ashish Nehra [ Images ] (one for 39) kept plugging away at the wickets.
Kumar, who bowled Upul Tharanga with the first delivery of the match, was India best bowler, taking two for 20 in eight overs. Tillakaratne Dilshan [ Images ] tried to rebuild the innings after the early damage with a brisk 45 from 62 balls but he top-edged a sweep against Ojha.
India were off to the perfect start as Praveen Kumar claimed the wicket Upul Tharanga with the first ball of the match. The left-hander was caught napping as he played nervously against a full delivery that swung a bit and took his off-stump.
Tillakaratne Dilshan hit the first boundary of the match, pulling a short delivery from Nehra to the square leg fence, in the fourth over.
But Kumar Sangakkara [ Images ] perished attempting the same shot as he tried to break the shackles. The Lanka captain top-edged his pull shot and was caught on the backward square leg boundary after scoring just two.
Kumar soon claimed his second wicket when he trapped Mahela Jayawardene [ Images ] leg before for four with one that came in sharply, leaving the hosts reeling at 23 for three in the seventh over.
Dilshan tried to play his shots early on but with wickets falling at the other end he looked to settle down and repair the damage by curbing his strokeplay.
Ishant started off well with the ball, claiming a wicket in his second over, while giving away just one run in the two overs.
Samaraweera (7 from 23 balls) shuffled across his stumps and tried to play on the leg side but ended up lobbing a simple catch to Ravindra Jadeja at short midwicket.
After a few tight overs, Dilshan finally broke the shackles, hitting Ishant through fine leg for a boundary, the first after seven overs.
Angelo Mathews [ Images ] looked to hit Sri Lanka out of trouble with a boundary in successive overs off Pragyan Ojha and Ishant as the total reached 72 for four in 20 overs.
Ojha struck an important blow before rain stopped play briefly. Dilshan, who scored 45 from 62 balls, tried to slog-sweep Ojha but only managed to top-edge it and was caught on the leg side.
After the brief rain break, that lasted around 10 minutes, play resumed and the Indian bowlers continued chipping away at the wickets.
Jadeja struck in his first over, trapping Mathews leg before wicket for 15, as Sri Lanka slipped to 84 for six after 23 overs.
Chamara Kapugedera [ Images ] also failed to make an impact with the bat. He chipped down the wicket to Jadeja but missed the ball, which hit his pads before crashing into the stumps.
Nuwan Kulasekara [ Images ] glanced a quicker delivery Jadeja through fine leg for a boundary, the first after 15 overs, in the 34th over. The pacer then cut a short delivery from Nehra through the point region for another four, in the next over, to score some useful runs.
Kulasekara and Randiv frustrated the Indians as they kept rotating strike while also getting the odd boundary in between.
Kulasekara was the aggressive of the two and wasted no opportunity to score boundaries. He cut a short delivery from Ishant for a boundary through the point region for his third four of the innings.
But the pacer had his revenge, as he had Kulasekara caught behind for a brisk 22 from 30 balls; the batsman added 39 useful runs for the eighth wicket with Randiv.
With just two wickets in hand, Sri Lanka decided to take the Batting Powerplay after 40 overs. Randiv started off that Powerplay in style when he drove a full delivery from Ojha through covers for a four and Lasith Malinga [ Images ] slammed Nehra down the ground for another four in the next over.
Malinga looked to take the attack to Ojha and charged down the wicket but missed the ball and was stumped by Dhoni for five.
Randiv tried to get some boundaries towards the end but perished, caught in the covers as he looked to chip Ojha over the covers.
He played an useful innings of 43 from 61 balls before Sri Lanka were bowled out for 170 in 46.1 overs.
Once again the Indian bowlers were found wanting against the tailenders. The last three wickets added 67 runs between them, giving the Sri Lanka total some respectability and something to bowl at.
The Indian openers adopted a cautious approach and played according to the merit of the ball knowing fully well that it was important to see out the new ball.
Sehwag got the first boundary of the innings, in the sixth over, hitting Kulasekara through the point region.
India made a steady beginning, with 30 runs coming from eight overs, before they lost three wickets for two runs in 11 deliveries.
Dinesh Karthik [ Images ] struggled to get going before deciding to cut loose. However, his attempted cut shot off Angelo Mathews went straight to the thirdman fielder and he was dismissed for a 35-ball 10.
Virat Kohli and Rohit Sharma then perished in successive overs for ducks.
Sangakkara came up with a brilliant one-handed catch, diving to his right, to send back Kohli, who edged an outgoing delivery from Dilhara Fernando.
In the next over, Sharma was unlucky to be adjudged leg before wicket as the ball took an edge before hitting his pads. India were reduced to 34 for three in 11 overs.
It was strange to see Sehwag looking to defend almost everything and play out the new ball. However, he soon opened up and drove Fernando down the ground for his third boundary, and a few overs later flicked Mathews through mid-on for yet another four.
That seemed to have broken the shackles as India got another three boundaries in the space of four balls.
Suresh Raina [ Images ] got his first boundary when he lofted Kulasekara down the ground, in the 18th over. In the next over, Sehwag brought back some smiles to the Indian dressing room by slamming Malinga for back-to-back boundaries.
Sehwag then flicked a full delivery from Fernando through midwicket for his seventh boundary to take the total to 79 for three in 20 overs.
The dashing opener brought up his half-century, one of his most hard-earned innings, from 57 balls, in the 22nd over.
In the same over, Raina hit Fernando for a boundary through point before falling off the next delivery. The left-hander, who made 21 from 35 balls, pulled a short delivery straight to Tharanga on the square leg boundary.
But there was no stopping Sehwag, who changed gears efficiently and kept the boundaries coming at regular intervals. This time he punished Randiv as he hit the off-spinner through the vacant thirdman region for back-to-back boundaries.
Captain Mahendra Singh Dhoni also settled down nicely. He hit Malinga for a boundary each in back-to-back overs as India looked good to win by a bonus point.
Sehwag seemed in a hurry to finish off the match. He pulled Mathews over midwicket for the first six of the match and then played the next delivery fine for a boundary.
In the next over, he swept Randiv for a huge six over square leg to move into the 90s and take India closer.
The stage was set for a perfect finish for India, who needed 10 runs for victory in 17 overs, while Sehwag needed six to complete his century.
He once glanced Mathews fine through the leg side for a four and then took a single to move to 99.
But he was denied his century by Sri Lanka's strange tactics. Needing five for victory, Sri Lanka conceded an easy boundary when Sangakkara let a straight delivery from Randiv through his gloves for a boundary.
Randiv then deliberately over-stepped the bowling crease with his next delivery, bowling way ahead of the mark to concede a no-ball.
Sehwag stepped down the wicket and slammed a huge six over long-off and raised his arms in triumph only to realise that his six would not count as the match ended as soon as the no-ball was bowled.
Interestingly, the ball was counted in Sehwag's tally but not the six and he finished one run short of the three-figure mark, having hit 11 fours and two sixes in 100 deliveries.
Dhoni finished unbeaten on 23 from 38 balls as India cruised to 171 for four in 34.3 overs to win by a convincing six-wicket margin and get a bonus point in the process.