The pair batted through the morning session of the fourth day to take their second innings from the overnight 43-0 to 150 without loss by lunch at the Sinhalese sports club on Sunday.
South Africa, trailing by 587 runs on the first innings, face the daunting task of batting out the last two days to force a draw in the opening match of the two-Test series.
Left-handed Rudolph, a late inclusion in the touring team after captain Graeme Smith suffered an ankle injury, made a fluent 80 with 12 boundaries.
Hall, opening the innings in place of the indisposed Herschelle Gibbs, reached 50 in the last over before lunch by driving Farveez Maharoof for his sixth boundary.
Gibbs, who did not field on Saturday due to a stomach bug, is fully recovered but can bat only after the fall of the fifth wicket.
Rudolph and Hall not only kept main threat Muttiah Muralitharan at bay on the wearing wicket, but punished the loose balls to keep the scoreboard ticking.
The first hour produced 61 runs in 13 overs and the second saw 46 runs in 18 overs as the batsmen battled bravely under the hot sun.
It was South Africa's best opening stand against Sri Lanka surpassing the 137 by Kepler Wessels and Andrew Hudson at the same venue in 1993.
Muralitharan, who took four wickets in the first innings, went wicketless in his first 14 overs in which he conceded 33 runs.
Sri Lanka scored 756-5 declared in their first innings with captain Mahela Jayawardene making the fourth highest Test score of 374 after sharing a world record partnership of 624 with Kumar Sangakkara (287).
The batting feast came after South Africa were dismissed for 169 on the opening day.