The Proteas electing to bat first at the R.Premadasa Stadium with Amla's 109 and de Villiers' making 75 off 70 deliveries made a finish at 304 for five in 50 overs
Kumar Sangakkara top scored with 88 for the Sri Lanka team. Mendis picked up three wickets for 61 for the Sri Lankan team.
Sri Lanka started its chase well adding 50 runs for the opening wicket with Kusal Perera leading with 34 off 33 deliveries before being caught by Morkel at short fine-leg. His opening partner Tillakaratne Dilshan departed for 40 after adding 48 runs with Sangakkara, leaving Sri Lanka on 98 for two.
Mahela Jayawardene (10), Ashan Priyanjan (5) and Angelo Mathews (13) all departed early before Sangakkara paired with Lahiru Thirimanne for a 52-run stand off 48 deliveries again raising Sri Lanka’s hopes. Thirimanne was bowled by McLaren for 15 and Sangakkara was out two deliveries later caught by substitute fielder Faf du Plessis off the same bowle
The second one-day international will be played in Pallekele on Wednesday.