Vernon Philander again proved a thorn in England's side as Alastair Cook eyed a hundred against South Africa in the third Test on Thursday.
England were 171 for four at stumps, having won the toss, with 31 of the scheduled 90 overs lost to bad weather on the opening day of the 100th Test at The Oval.
Pace bowling all-rounder Philander had superb figures of two wickets for 17 runs in 12 overs, including five maidens, despite a stomach bug.
That followed his man-of-the-match display with both bat and ball in South Africa's crushing 340-run victory in the second Test at Trent Bridge last week – a result that left the four-match series level at 1-1.
"I thought he bowled so well," returning South Africa fast bowler Kagiso Rabada told reporters.
"Going off the field, I asked him for a few pointers. He is a really skillful bowler, especially in these conditions. He makes it look really simple."
Former England captain Cook was 82 not out at Thursday's close.
Already England's leading Test run-scorer, the left-handed opener spent more than four-and-a-half hours at the crease to be in sight of his 31st century at this level.
Ben Stokes was 21 not out, having so far put on 51 for the fifth wicket with Cook.
Earlier, Tom Westley marked his Test debut with a promising 25 in England's troublesome number three position and put on 52 with Cook, his Essex team-mate and mentor.
"It’s something you dream about as a boy, wanting to play Test cricket for England," Westley told Sky Sports.
"It was familiar territory for me, batting with Cooky – having done so at Essex for so many years – and was quite calming.
"Cooky batted superbly today in tough conditions," added the 28-year-old right-hander.
England had been heavily criticised by several former captains for a lack of resolve at Trent Bridge, where they were twice bowled out cheaply and folded for 133 in their second innings.
Although the overcast conditions and green-tinged pitch promised to assist quick bowlers, England captain Joe Root opted to bat first after winning the toss, just as South Africa skipper Faf du Plessis had done in a similar situation in Nottingham.
Root may also have wanted to show confidence in his under-fire batsmen.
But it was not long before England lost their first wicket.
Keaton Jennings, battling to retain his place, was repeatedly beaten outside off stump by Philander and the South Africa-born opener eventually edged the seamer low to Dean Elgar at third slip for a nine-ball nought.
Westley, one of three England debutants, walked out at 12 for one, having been picked after a finger injury ruled out the struggling Gary Ballance.
He got off the mark with a neat legside four off fast bowler Morne Morkel.
Westley, who earlier this season scored a hundred against South Africa for the second-string England Lions, also drove spinner Keshav Maharaj for two boundaries in an over.
England were 62 for one at lunch, with Cook 34 not out.
Westley, however, had added just one to his score when, four balls after the break, his 89-minute innings ended when he nicked a curving Chris Morris delivery to du Plessis at second slip.
Star batsman Root then made 29 before he edged an excellent Philander ball that cut off the seam and was brilliantly caught one-handed by diving wicket-keeper Quinton de Kock.
Rabada, banned from the second Test for swearing at Stokes in the series opener at Lord's, then got in on the act.
The 22-year-old rising star produced a superb inswinging yorker that knocked Dawid Malan, another of England's debutants, off his feet before crashing into middle stump.
Middlesex left-hander Malan, born in London but brought up in South Africa, was out for one.
Rabada's joy was obvious but he insisted he'd learnt his lesson.
"It's really simple: don't swear, but just be yourself," he said.
"I don’t have any bad intentions. We talk off the field, myself and Stokes and the other players.
"I don’t think I'll stop the way I'm playing, I'll just follow the rules," Rabada added.