Richardson then skittled captain Dasun Shanaka for a duck, but Charith Asalanka -- with an ice-cold six in the penultimate over off Hazlewood -- and Chamika Karunaratne saw Sri Lanka home.
"In the dressing room we talked about tempo and awareness and they delivered," Shanaka said. "It is a great chance for this team to pull out a series win."
"The heat and humidity was a challenge for both teams. But we handled it to our advantage," said 24-year-old Nissanka.
"The wicket seemed to get a little bit better, it wasn't stopping as much in the surface. But all credit to Sri Lanka, that was a great run chase," Australian captain Aaron Finch said.
"It was quite clinical, particularly Nissanka. That was a very classy innings. And Kusal (Mendis), we know the quality of player he is," Finch said.
Earlier Australia braved a spin onslaught to reach 291-6 in their 50 overs after winning the toss and opting to bat first.
Opener David Warner went for nine in the third over and Mitchell Marsh, back from injury, struggled to get going and departed for 10 off 23 deliveries.
Marnus Labuschagne and Finch added 69 before Labuschagne was stumped off Jeffrey Vandersay for 29 and Finch edged the same bowler to slip two overs later having made 62 off 85.
Head and Alex Carey added 72 before de Silva trapped Carey leg-before. Maxwell hit 33 off 18 but became Vandersay's third scalp, miscuing the spinner to Dunith Wellalage scurrying back from midwicket.
But Head stayed firm, reaching his half-century and punishing Wellalage with three sixes in the penultimate over and ending 70 not out of 65 deliveries.
Vandersay ended with figures of 3 for 49.
Already missing Marcus Stoinis, Kane Richardson and Mitchell Starc, Australia left out Steve Smith after the batsman injured his left quad batting in Thursday's 26-run defeat in Pallekele.
Cameron Green and Richardson returned from injury, while Test skipper Pat Cummins and Mitchell Swepson were left out. Spinner Kuhnemann was again in for the injured Ashton Agar.
The hosts were once again without key all-rounder Wanindu Hasaranga, who injured his groin in the first match while Dickwella replaced Danushka Gunathilaka.