South Africa, who have already clinched the series 2-0, were dismissed for 316 in their second innings, leaving England 197 to win their first test with Kevin Pietersen in charge.
England faced eight balls without adding a run or losing a wicket before rain brought the day to a premature close.
De Villiers and Paul Harris came together with six wickets down and South Africa only 96 ahead.
They played patient, composed cricket before Harris (34) fell to Stuart Broad and de Villiers missed out on his century bowled by Monty Panesar.
After attacking most of the match, Pietersen deployed a defensive field for de Villiers, hoping to put all the pressure on Harris. But the South African spin bowler looked comfortable, helping his partner pick off the runs.
Harris fell eventually to a catch by Andrew Flintoff at second slip and de Villiers succumbed shortly afterwards when Panesar found the rough outside leg stump. He scored 12 fours in his 235 valuable minutes at the crease.
"Getting my 100 was not an issue. I just wanted to keep going for the team, keep pushing the score along. Of course it's disappointing but that really wasn't the issue," de Villiers told a news conference.
"Ideally we should have got a 250 lead so we fell a bit short but the ball is doing a bit and if the bowlers hit their stride tomorrow we can win this."
Steve Harmison gave England an early boost with the wickets of Hashim Amla (76) and Jacques Kallis (9) before lunch.
Amla, who had played with great assurance during the 82 minutes' play possible on Saturday got an outside edge on a sharp delivery from Harmison and keeper Tim Ambrose, diving to his right, juggled the ball before securing the catch.
Kallis, who has had a miserable series with the bat, series, earned the briefest of reprieves when Pietersen put down a regulation catch at extra cover.
But the experienced South African failed to capitalise, pushing the next ball low to Collingwood at third slip. It was Harmison's second wicket of the morning and his delight was matched by Pietersen's.
Prince was the next to go, becoming Flintoff's first victim of the second innings when he got a thick edge to Strauss at first slip for 24.
James Anderson, returning to the Vauxhall end after lunch and swinging the ball, got the better of Mark Boucher (12) for the second time in the match. The keeper defended with the shoulder of his bat and looped a catch to Collingwood at backward point.
South Africa were down to the tail and Morne Morkel soon followed Boucher, caught bat and pad by Ian Bell off the spin of Panesar for 10. South Africa went into tea on 265 for seven.
Pietersen took over from Michael Vaughan last Monday and will also lead England in the one-day series this month.