Waugh plundered the Sri Lankan attack for 170 in a marathon seven-hour innings before Mark Taylor, the Australia captain, declared an hour before the close on 502 for 9.
The tourists reached 80 without loss at the close, still needing 223 runs to avoid the follow-on and the likelihood of a third successive Test defeat. The Sri Lanka opener, Sanath Jayasuriya, responded positively with a succession of attacking shots, including one cover drive which went for six, to remain unbeaten on 47 alongside Chandika Hathurusinghe on 24.
Resuming on 70, Waugh hit 13 fours and one five on his way to a second successive century against Sri Lanka, eclipsing his 131 not out in Melbourne in the second Test last month. He played a near-flawless innings before deflecting the first ball after tea on to his stumps.
Australia have already wrapped up the series 2-0 with victories in the first two Tests after reaching successive first-innings totals of 500 for 6 and 617 for 5 declared.
The Sri Lankan bowlers once again struggled for penetration and accuracy as Australia added to their overnight score of 239 for 5 with ease. The wicketkeeper Ian Healy hit an untroubled 70 and the pace bowler Paul Reiffel made a Test-best 56.
It was Waugh, however, who capitalised on Sri Lanka's lacklustre display. But it was an agonising dismissal for the New South Wales batsman, who watched helplessly as the ball brushed against the stumps with only enough force to dislodge a single bail.
Sri Lanka paid the price for a poor fielding display after spilling a succession of catches during the innings, most significantly when Waugh was dropped on 37 by the wicketkeeper, Romesh Kaluwitharana, on the first day.
(Second day; Australia won toss)
AUSTRALIA - First Innings
(Overnight: 239 for 5)
S R Waugh b Pushpakumara 170
I A Healy c Pushpakumara
b Dharmasena 70
P R Reiffel c Gurusinha
b Wickramasinghe 56
S K Warne c Pushpakumara
b Wickramasinghe 33
C J McDermott not out 15
Extras (lb9 w1 nb2 b5) 17
Total (for 9 dec, 157.3 overs) 502
Fall (cont): 6-326, 7-443, 8-467, 9-502.
Did not bat: G D McGrath.
Bowling: Vaas 42-11-106-3; Pushpakumara 34-4-126-2; Wickramasinghe 39.3- 7-120-3; Dharmasena 25-3-80-1; Jayasuriya 13-2-41-0; Hathurusinghe 4-0- 15-0.
SRI LANKA - First Innings
U C Hathurusinghe not out 24
S T Jayasuriya not out 47
Extras (b2 lb6 nb1) 9
Total (for 0, 16 overs) 80
To bat: A P Gurusinha, *P A de Silva, S Ranatunga, H P Tillakaratne, R S Kaluwitharana, H D P K Dharmasena, W P U J C Vaas, G P Wickramasinghe, K R Pushpakumara.
Bowling: McDermott 5-1-28-0; McGrath 6-1-22-0; Reiffel 2-1-7-0; Warne 3-0-15-0.
Umpires: L Barker and S Randell.Reuse content