Angelo Mathews moved to within 15 runs of a maiden Test century as Sri Lanka steadily extended their first innings lead against Australia in the third and final Test on Sunday.
In reply to Australia's first innings total of 316, hosts Sri Lanka, trailing the three-Test series 1-0, ended day three on 428 for six wickets for a lead of 112 runs.
At stumps, Mathews remained unbeaten on 85 off 207 balls with debutant Saminda Eranga (5 not out) keeping him company.
Mathews, who has twice been dismissed in the nineties in his 16-Test career, was involved in two useful partnerships that enabled Sri Lanka to move ahead of Australia's total.
He stitched together a record fifth-wicket stand of 121 with captain Tillakaratne Dilshan and followed it up with another partnership of 81 with Prasanna Jayawardene.
The ball hit Haddin on his right thigh before he held on to it, bringing an end to a partnership that was Sri Lanka's highest for the fifth wicket against Australia.
Australia had to wait 28 overs for their next wicket when wicketkeeper Prasanna Jayawardene (47) was caught at short mid wicket to give Copeland his second wicket.
The hosts had resumed their innings on 166-2 but were forced to consolidate after Australia picked up the prized wickets of Kumar Sangakkara and Mahela Jayawardene before lunch.
Shane Watson made the first breakthrough when he lured Mahela Jayawardene into an expansive drive outside the off stump that caught an edge and went straight through to Haddin.
Jayawardene (51) completed his half century with nine fours and shared a third-wicket stand of 101 with Sangakkara (79).
Sangakkara, playing in his 100th Test match, hit 10 fours and faced 176 balls before Peter Siddle dismissed him with the second new ball.
The ball bounced more than the left-hander expected and took the shoulder of his bat on its way to Haddin.
Scorecard:
Australia 1st innings: 316
Sri Lanka 1st innings (overnight 166-2):
T Paranavitana c Ponting b Johnson 46
L Thirimanne b Siddle 28
K Sangakkara c Haddin b Siddle 79
M Jayawardene c Haddin b Watson 51
T Dilshan c Haddin b Copeland 83
A Mathews batting 85
P Jayawardene c Clarke b Copeland 47
S Eranga batting 5
Extras: (b-1, lb-2, nb-1) 4
Total: (For 6 wkts in 155 overs) 428
Fall of wickets: 1-56, 2-97, 3-198, 4-210, 5-331, 6-412
Bowling: Copeland 33-10-70-2, Siddle 27-7-76-2, Johnson 33-5-116-1, Watson 24-7-53-1, Lyon 34-5-91-0, Hussey 2-1-5-0, Ponting 2-0-14-0.
Sri Lankan Mathews ruled out of final
Sri Lanka retain Dilshan as captain
Leeds ODI: Jayawardene steers Sri Lanka to victory
PIX: On the sets of Brad Pitt's Zombie flick
Hussey brothers in, Siddle dropped from WC squad