England closed on 386 for five, a first-innings lead of 43, with Bell still at the crease on a sparkling 55 not out, alongside Matt Prior on 11.
Earlier, Cook scored 118 and Collingwood 91, sharing a fourth-wicket stand of 142 that left South Africa's attack looking helpless.
Left-handed opener Cook stroked 11 fours in his 10th Test century, while Collingwood hit seven fours.
Bell, coming to the wicket on 297 for four, was able to be more aggressive, tearing into the bowling as he needed just 65 balls to reach his 22nd half-century, with five fours and a six.
South Africa gave a much-improved bowling performance in the morning and the wickets of Jonathan Trott for 18 and Kevin Pietersen for 31 were the result.
England resumed on their overnight score of 103 for one and Trott was dismissed by the seventh ball of the day.
Morne Morkel bowled a back-of-a-length delivery that bounced appreciably, and Trott pushed hard at the ball and edged it to Boucher, who dived in front of first slip to take a good catch.
Pietersen handled the quick bowlers easily in scoring 31 off 52 balls, but left-arm spinner Paul Harris frustrated him and he was trapped lbw after a loose sweep attempt.
OBDURATE STANCE
Cook, relying on a watchful technique and considerable determination, frustrated South Africa as he lingered obdurately at the crease and led England to 190 for three at lunch.
After the interval, Cook and Collingwood cashed in on beautiful batting conditions to improve the score to 281 for three at tea.
Cook was reprieved under the decision review system after originally being given out caught off bat and pad at short-leg off JM Duminy when he had 64.
Cook reached his first century in seven Tests when he drove Makhaya Ntini through midwicket for two runs midway through the second session.
He eventually fell in the fifth over after tea when he edged an excellent delivery from Morkel into the hands of Jacques Kallis at second slip, but Collingwood and Bell then put on 68 runs in 21.1 overs.
Collingwood was dismissed in sight of his 10th Test century when he edged a cut off spinner Duminy into the gloves of wicketkeeper Mark Boucher.
Scoreboard
South Africa (first innings): 343.
England (first innings): A Strauss b Morkel 54
A Cook c Kallis b Morkel 118
J Trott c Boucher b Morkel 18
K Pietersen lbw b Harris 31
P Collingwood c Boucher b Duminy 91
I Bell not out 55
M Prior not out 11
Extras: (lb-4 nb-1, w-3) 8
Total: 386 for 5 (in 123 overs).
Fall of wickets: 1-71, 2-104, 3-155, 4-297, 5-365.
Bowling: Steyn 26-6-60-0, Ntini 20-3-79-0, Morkel 27-6-69-3 (w-3), Kallis 14-1-43-0 (nb-1), Harris 23-2-92-1, Duminy 13-1-39-1.
I am almost back to my best: Pietersen
Smith happy under Warne's shadow
Swann keeps England afloat in first Test
Trott inclusion provides England an option
Trott in, Bopara out of England squad for Oval