Mumbai Indians, chasing a stiff target of 208, were restricted to 170 for nine in 20 overs after Ambati Rayudu top scored with 62 and Dinesh Karthik made 40.
It was an all-round show by Daredevils. A century-run stand between openers Virender Sehwag (73) and Mahela Jayawardene (55) took Delhi Daredevils to a formidable total of 207 for five in 20 overs.
A disciplined performance from pacers Umesh Yadav (2-36), Irfan Pathan (2-46) and left-arm spinner Shahbaz Nadeem (2-35) helped them register their second win over Mumbai Indians this season.
Mumbai Indians failed to extract revenge for their home loss against Daredevils when they were shot out for 92 for their lowest total in the IPL.
With the win, Daredevils opened up a three-point lead at the top and have 12 points from eight matches while Mumbai Indians are seventh with eight points from as many matches.
Mumbai Indians' chase started on a poor note as they lost opening batsmen Aiden Blizzard in the third ball of the day with Jaywardene taking an easy catch at mid-on off Irfan Pathan (2-29).
Sachin Tendulkar, who was nominated to Rajya Sabha Thursday, disappointed as he managed just seven before he holed out to Kevin Pietersen at mid-off off Morne Morkel.
Mumbai Indians' in-form batsman Rohit Sharma (12) played a poor shot at a wide delivery off Pathan and gave an easy catch to Ajit Agarkar at mid-off as Mumbai Indians were reduced to 19 for three. By 10 overs, Mumbai Indians were struggling at 88 for three.
The 96-run stand between Karthik and Rayudu was the only highlight of their chase. And after they departed, the lower-order failed to put much of a fight.
Earlier, Sehwag and Jayawardene with their 135-run stand, the highest opening run stand and second highest overall in the season, laid the foundation for a late onslaught by Kevin Pietersen (50 not out).
Jayawardene started the blitzkrieg with three crisply timed fours off Sri Lankan fast bowler Lasith Malinga (2-31) in the third over. Malinga, who was coming from an injury layoff due to a back spasm, was still the pick of the Mumbai Indians. In his last outing here in 2011, Malinga had demolished the Daredevils batting with his figures for five for 13.
Sehwag raised the tempo in the sixth over, hitting pacer Rudra Pratap Singh for a six and a four in consecutive balls. From then on there was no stopping Sehwag, who was the dominating force during the first-wicket stand. Sehwag also became the first batsmen this season to strike three consecutive fifties.
Jayawardene was happy playing the second fiddle and rotated the strike that allowed Sehwag to go freely after the Mumbai Indians bowlers.
Sehwag, who survived a stumping chance in the ninth over off Robin Peterson (3-37), got his half -century in style hitting Kieron Pollard two sixes and two fours in the 11th over as he jumped from 44 to 65 in just six balls.
At a time when the partnership looked dangerous, Jayawardene gifted his wicket as he attempted a reverse pull off left arm-spinner Robin Peterson and found Rohit Sharma at points. Jayawardene struck eight four in his 42-ball knock.
Petersen struck twice in his next over to get rid of Sehwag and Irfan Pathan, who was promoted up the order and did not trouble the scorers.
Englishman Pietersen, however, kept Daredevils on track and smashed IPL debutant Rahul Shukla for two fours and a six as 17 runs came off the 15th over.
Pietersen was severe on Petersen and hit the South African for two fours and two sixes as 20 runs came off the 18th over. Pietersen and Ross Taylor (15) added valuable 41 runs for the fourth wicket and by the 18th over Daredevils were 195 for three and were looking at a target well above 200.
Malinga, however, struck twice in the penultimate over to remove Taylor and Yogesh Nagar, trapping them LBW in consecutive deliveries to pull back things in favour of Mumbai Indians. Daredevils managed just 12 runs in the last two overs to get to the second highest total of the season.