Only three-and-a-quarter hours of play were possible due to bad light and by stumps Zimbabwe had reached 48 for 2 in their second innings - a lead of 35 runs after dismissing the Sri Lankans for 231.
The Zimbabwe openers Grant Flower, who made 13, and Craig Wishart (9) were both dismissed by Chaminda Vaas as the Sri Lankan bowlers looked to build on the efforts of Arnold.
Sri Lanka, who are 1-0 up in the series, had resumed still 59 runs in arrears on 159 for 7. But Arnold was well supported by the tail as he advanced from 65 to 104 not out before running out of partners.
Arnold's second Test century contained 14 fours and he faced 243 balls in an innings that lasted six-and-a-quarter hours.
Arnold's feat means that he and Marvan Atapattu, who scored a double century at Bulawayo, became the first openers in Test history to carry their bats on the same tour.
Third day; Sri Lanka won toss
ZIMBABWE - First Innings 218 (N C Johnson 70; K R Pushpakumara 5-56).
SRI LANKA - First Innings
R P Arnold not out 104
K R Pushpakumara lbw b Strang 7
G P Wickramasinghe c A Flower
b Olonga 18
M Muralitharan b Olonga 5
Extras (2lb, 2w, 5nb) 9
Total (all out, 88.4 overs) 231
Fall: 8-178, 9-208, 10-231
Bowling: Olonga 22.4-2-54-3; Brandes 17-5-45-3; Strang 24-8-71-2; Whittall 17- 9-37-2; Price 8-3-22-0.
ZIMBABWE - Second Innings
G W Flower c Dilshan b Vaas 13
C B Wishart b Vaas 9
M W Goodwin not out 15
N C Johnson not out
Extras (1lb, 1nb) 2
Total (for 2, 23.4 overs) 48
Fall: 1-14, 2-28
To Bat: *A Flower, A D R Campbell, G J Whittall, R W Price, E A Brandes, B C Strang, H K Olonga.
Bowling: Vaas 10.4-3-23-2; Pushpakumara 7-2-15-0; Wickramasinghe 6-3- 9-0.
Umpires: I D Robinson and S Venkataraghavan (Ind).Reuse content