Warner drove six boundaries as he made 62 from 46 balls to give the Australians a solid platform to their run chase.
Mitchell Johnson (4-63) earlier claimed four wickets as the Australian bowlers dominated a Sri Lankan batting lineup whose only redeeming feature was Kumar Sangakkara's defiant 58 that including his 10,000th test run.
After Warner was caught by Dhammika Prasad off Angelo Mathews, Phil Hughes was dismissed in an embarrassing run out when he found himself at the same end as batting partner Ed Cowan, who was out the next over off a Prasad ball.
Captain Michael Clarke, who was a last-minute inclusion after declaring himself fit Wednesday, set about guiding the Australian innings to stumps and was on 20 with Shane Watson on 13.
Wicketkeeper Prasanna Jayawardene didn't take the field following tea after injuring his right thumb while batting during Sri Lanka's innings. Sangakkara took his place behind the stumps.
Warner made an explosive start to the innings, displaying his full range of strokes until the 18th over when, tempted by Mathews to swing at a shorter delivery, he lofted the ball into the hands of Prasad at deep mid-wicket.
Fellow-opener Cowan turned a Rangana Herath delivery toward mid-wicket, but the ball was quickly fielded by Tillakaratne Dilshan. Hughes ran for Cowan's end while watching the fielder, as Cowen stood his ground, and found himself in the wrong crease when the stumps were broken.
Cowen was out the next over when he offered a thick edge to Prasad's angling delivery, which was caught by Mahela Jayawardene at second slip.
Left-armed paceman Johnson (4-63) narrowly missed a hat trick earlier when he had Prasanna Jayawardene caught by Hughes at third slip for 24 while fending off a short ball, then had Prasad caught behind the next ball.
The dismissal of Prasanna Jayawardene broke up a promising 35-run partnership with Sangakkara and exposed the Sri Lankan tailenders to an increasingly confident Australian pace attack.
Seam bowler Jackson Bird secured his first wicket in his maiden test in the fourth over of the match to spark a top-order collapse when Dimuth Karunaratne lunged forward and was caught behind for 5.
Peter Siddle returned figures of 2-30, while spin bowler Nathan Lyon mopped up the Sri Lankan tail to finish with 2-23.
Sangakkara reached the 10,000-run mark in 195 innings, equaling the record previously shared by Brian Lara and Sachin Tendulkar. Tendulkar tops the test run scorers list with 15,645.
Sangakkara averages more than 55 runs in a career spanning 115 tests. The only other Sri Lankan to have made more than 10,000 test runs is Mahela Jayawardene.
After a race to prove his fitness, Australia named Clarke to play despite the hamstring injury he suffered in last week's first test in Hobart.
"I'd call myself 100 percent (fit),'' Clarke said during the coin toss. "If I couldn't have turned up today and performed at my best, I wouldn't have been playing.''