The tourists reached 123-3 at stumps and trail Australia by 411 runs, with Kusal Perera unbeaten on 11 and Dhananjaya de Silva on one.
Australia, who lead the two-match series 1-0 after winning the opener by an innings and 40 runs at Brisbane last week, are on course to claim their first series since a 4-0 Ashes victory over England last year.
After resuming on 384-4, the hosts declared their first innings closed after lunch. Kurtis Patterson, in just his second test innings, was unbeaten on 114 after posting his maiden century and captain Tim Paine was 45 not out.
In reply, Sri Lanka’s left-handed opening pair of Karunaratne and Lahiru Thirimanne held off Australia’s attack for 30 overs to add 82 before a vicious Pat Cummins delivery struck Karunaratne around the back of the neck.
The impact felled the 30-year-old and he was stretchered off in a neck brace after a lengthy delay. He was forced to retire hurt on 46 but Sri Lanka coach Chandika Hathurusingha later had good news about his condition.
“He’s in the hospital at the moment and in good spirit,” he told reporters. “He’s been assessed and no danger at the moment. He was talking to us before leaving (for hospital) as well.
“It was a bit scary the way he fell back initially. But he was okay, was talking throughout to the umpires and the physio.”
That ended Sri Lanka’s solid opening stand, the best from a visiting team in Australia since England’s Alastair Cook and Michael Carberry put on 85 in Perth in December 2013.
Karunaratne’s departure seemed to derail Sri Lanka’s innings.
In the following over, Thirimanne hit off-spinner Nathan Lyon for two fours before edging him to slip on 41. Cummins then breached the defence of Kusal Mendis (six) with a peach of a delivery.
Mitchell Starc, who nabbed 15 wickets in five tests during the India series and opener against Sri Lanka, has come in for criticism for some wayward bowling and while he was regularly clocking over 150 kph during his opening spell the Australia pace spearhead once again lacked direction.
He finally had some joy when he got captain Dinesh Chandimal (15) to glove a catch behind shortly before stumps.
Patterson said the home side’s attack was showing its class.
“I am not sure what Karunaratne is going to do but we are two wickets away from bowlers,” he said. “There’s generally been a little bit in the wicket for the first 30-40 minutes of each day.
“If we can get a couple of early wickets and wind Starc up to get into their tail, it will go a long way in winning the test.”
The home side had struggled with the bat recently but have three centurions in Canberra already.
After hundreds from Joe Burns and Travis Head on the first day, the 25-year-old Patterson, who made his debut in Brisbane, looked untroubled against a second-string Sri Lanka attack.
Overnight centurion Burns added eight to his overnight score before playing on to his stumps for 180.
Patterson, who smacked 14 fours and a six in his knock, and Paine then continued to plunder runs at will with an unbroken sixth-wicket stand of 130.
(Editing by Greg Stutchbury/Peter Rutherford)