After restricting Sri Lanka to 233 for right, the Indians chased down the target with 20 balls to spare after suffering a mid-innings collapse which reduced them to 181 for 6 in 36 overs.
Ravindra Jadeja [ Images ] (24) and Ravichandran Ashwin (30) then kept their nerve and put on 53 runs for the unbroken seventh wicket stand to guide India home. It was India's second win in what has turned out to be a rather nightmarish tour of Australia [ Images ].
The victory capped a brilliant match for Ashwin who also claimed 3 for 32 while Sri Lanka batted first for their 233 for 8.
In-form Virat Kohli [ Images ] (77) and Sachin Tendulkar [ Images ] (48) had played a good hand among India's top-order batsmen but the rest were guilty of playing indiscreet shots to leave the team in the lurch.
Virender Sehwag [ Images ] (10) began blazingly by smashing off-side fours off Nuwan Kulasekara [ Images ] and Lasith Malinga [ Images ] before he tried to help a rising delivery over the slips and was caught on the run by the third man fielder.
Sachin Tendulkar (48) appeared in splendid touch and it appeared that he would finally complete his historic 100th international century before he tried to cut an Angelo Mathews [ Images ] delivery too close to his body and dragged the ball on to his stumps.
Tendulkar faced 63 deliveries and hit five fours in his knock. Before he was out, he put on 75 runs for the second wicket with Virat Kohli off 98 balls. India then lost three wickets to poor shot selection and suddenly the match had swung back in balance.
Rohit Sharma [ Images ] (10)'s cut shot went straight into the hands of point fielder while Suresh Raina [ Images ] (24) and skipper Mahendra Singh Dhoni [ Images ] (4) holed out to a pull-shot which neither the deliveries nor the situation demanded.
Kohli, on 62, was suffering from hamstring pull when his partner Raina attempted a horizontal bat shot off the very next delivery to get dismissed.
His 24 off 27 balls had promised a lot, especially in the manner he got a couple of boundaries through the off-side.
India took the batting Powerplay in the 36th over and the game took a still more dramatic turn.
Kohli slammed a Dhamika Prasad delivery straight for a tremendous six but then ran for a non-existent run off the final ball of the over. Lasith Malinga, at mid-on, made a smart pick-up and threw down the non-striker's stumps in one motion.
Kohli went flat to reach his crease but he was well short. The young Delhi [ Images ] batsmen, incapacitated by a hamstring strain, needed to be carried off the field. Kohli faced 94 balls for his 77 runs and hit nine fours and a six. India, six down for 181 in 36 overs, were in a spot of bother.
Then Jadeja and Ashwin got together, playing sensibly and rarely offering a chance before winning with 20 balls to spare.
Earlier, India gave a compelling performance in the field to restrict Sri Lanka to 233 for eight. Spin twins Jadeja (1 for 41) and Ashwin (3 for 32) squeezed the runs dry while veteran pacemen Zaheer Khan [ Images ] was brilliant up front with two critical wickets.
Zaheer began with the scalp of opener Upul Tharanga (4) in his second over and then returned midway to send back Kumar Sangakkara [ Images ] (26) to finish with two for 44 from his allotted overs.
Skipper Mahendra Singh Dhoni also put up an impeccable show, having a hand in two stumpings and a run-out, beside taking a spectacular catch.
Sri Lanka had things in control when Tillakaratne Dilshan [ Images ] (48) and Sangakkara (26) put on 62 runs for the second wicket.
Apparently, a platform had been laid and Sri Lanka were eyeing a total in excess of 250 runs. But it all changed when Sangakkara departed, caught brilliantly by Dhoni, diving to his left, off Zaheer Khan who returned for his second spell in the 17th over.
India then wrested back control, conceding at one stage only 44 runs from 15 overs. The bowling Powerplay, which India took in the 16th over, cost only 11 runs for a wicket.
Ashwin began with a maiden over but then was held back by final overs. Dhoni pressed on with Praveen Kumar [ Images ] and left-arm spinner Jadeja and the two squeezed the runs dry.
Dilshan, who had begun in a thrilling fashion by twice thumping Praveen Kumar to off-side, was caught up too in this Indian squeeze and left on 48, cutting Jadeja straight into the hands of Virat Kohli at point.
The former Sri Lankan captain was at the crease for 103 minutes and faced 79 balls, hitting six fours. Dinesh Chandimal (64) and skipper Mahela Jayawardene [ Images ] (23) then pottered around for 62 balls and raised 52 runs for the fifth wicket before the start of the batting powerplay fetched India one more wicket.
India began with Ashwin in the batting Powerplay and the off-spinner justified it by snaring Jayawardene into a sweep which went high to Rohit Sharma at widish long leg.
Sri Lanka lost another wicket in the batting Powerplay as Ashwin was once in the centre of things when he drew Thisara Perera (7) out of his crease and Dhoni did the rest. In all Lankans scored only 23 runs from batting Powerplay.
Sri Lanka lost their top scorer Chandimal in the 44th over when Ashwin made one spin past his bat for Dhoni to effect a smart stumping. Chandimal batted for 81 balls for his 64 runs, hitting four fours.