Islanders, set the revised target of 154 runs in 21 overs, chased it down with eight wickets in hand and two overs to spare.
The win moves Jayawardene's men to six points, just one point adrift of Australia which trails series leaders India by the same margin.
Dilshan, promoted up the order in the absence of Tharanga, made most of the wayward bowling coupled with some lax fielding from the rivals across Palk Strait.
The 31-year-old batsman, who was dropped in the home series against England last Dec owing to an indifferent form, played an innings that breathed a new lease of life into his side's hopes in the series.
He cleverly mixed caution with aggression to construct his 59-ball innings innings studded with six boundaries and a six. He added a match-winning 85-run stand with skipper Mahela Jayawardene.
Veteran opener Sanath Jayasuriya (27 off 13) set the tone for Lankans with a hurricane knock. The Matara Marauder blazed away 23 runs off the Sreesanth's second over. Sree, who bowled a terrific spell against Aussies on Sunday, had a pretty bad outing in Canberra.
Man-of-the-moment Ishant (1/27) got the vital breakthro' when Jayasuriya (27 from 13 deliveries) was caught behind by Dhoni attempting to flick a short ball down the on-side, but the 37-year-old had left his side well-placed at 45/1 in the fourth over.
Kumar Sangakkara (10) was also in a hurry but his aggression proved costly. Sanga committed harakiri driving Harbhajan straight to Ishant stationed at mid-wicket to leave Lankans in some sort of bother at 69/2.
Earlier India riding on Rohit Sharma's master class half-century, posted a healthy 195/5 in 29 overs.
Rohit remained unconquered on flowing 64-ball 70 studded with six hits to fence and one over it. Tendulkar and Gambhir made 32 and 35 respectively while Dhoni chipped in with 31.
Tendulkar and Sehwag got off India to a brisk start adding 45 runs in seven overs. The duo took some time to read the pitch and conditions on a gloomy overhead conditions before cutting loose. Tendulkar got into groove quickly belting Malinga for two consecutive boundaries. He cut, drove, pulled with elan.
Debutant Kulasekara drew the first blood for Lankans when he dismissed Sehwag caught Murali at third-man. Tendulkar, who looked set for big one, was undone by a top edge of a lofted off-drive off Maharoof that landed in Kulasekara's hand at deep point to leave India to 49/2.
Rohit Sharma joined Gambhir in the middle and staged a fine recovery with workmanlike 54-run stand. Gambhir's 33-ball 35 innings was ended in an unfortunate run out. The Delhi southpaw failed to beat Dilshan's throw from point.
Rohit then continued good work with his skipper. The pair unleashed a flurry of boundaries in the final overs. Rohit was a class act His drives and cuts in his chanceless innings were a treat to watch.
Sri Lanka skipper Mahela Jayawardene won the toss and elected to field in a match reduced to 29 overs after the sloppy underfoot conditions owing to early morning thundershowers delayed the start by three hours.
India retained the squad that registered a facile win against Australia at MCG on Sundaywhile Lanka picked seamers Kulasekara and Maharoof in place of Upal Tharanga and Ishara Amarasinghe.