Chasing an imposing target of 332, South Africa were all out for 305. The Proteas lost three top wickets for six runs in the group B match.
The star of the show was Dhawan, who made 114 of a mere 94 balls to set the tone for India. The left-hander had scored 185 on his Test debut against Australia in March.
South Africa, who ran neck-and-neck in terms of runs with India till at least the 35th over, paid the price for losing far too many wickets after at least three middle-order batsmen frittered good starts.
Robin Peterson's departure in the 25th over opened the floodgates as South Africa lost three quick wickets, including the man who had the calibre to take the game to the wire, skipper A B De Villiers.
More From This Section
Two horrible mix-ups ruined the South African run chase. Peterson, who survived a run out chance when he was on 29, was not lucky the second time as a diving Ravindra Jadeja caught him well short after De Villiers refused to run.
Peterson, struck in the elbow by a Yadav delivery when he was on 17, battled pain and stitched a confident stand with his captain till disaster struck. J P Duminy (LBW to Jadeja for 14) followed Peterson and then a rush of blood saw De Villiers throw his wicket away after a polished 70 off 71 balls, his 33rd ODI half-century.