Joe Root produced another fine knock to avert a complete English collapse as he scored his eighth ODI with his 109 from 124 deliveries.
The English recovered from an early setback as Jon Roy (6) top-edged a Kagiso Rabada delivery to Kyle Abbott in the sixth over.
Rabada was in fine form boasting with figures of 4/45 while Tahir’s first spell swung the innings in South Africa’s favour with his haul of 3/46.
Root and Alex Hales combined for a fruitful second-wicket partnership of 69 runs before Tahir’s three-wicket fling.
Tahir’s dismissal of Hales was the first domino in a set of five to tumble within seven overs which left England caught in the headlights on 106/6 by the 25th over.
A delivery after posting his half-century Hales went after Tahir only to be caught out on the boundary rope at deep midwicket by David Miller.
Proteas spin bowler went on his characteristic celebratory run twice in his third over as Eoin Morgan (2) found Farhaan Behardien at point.
Hashim Amla’s safe hands naturally gravitated towards any ball that sniffed at an edge as he claimed two superb catches at slip.
Taking a roaring one-handed catch diving to his right fielding at slip Amla sent Ben Stokes (2) back to the changeroom after he edged a Tahir delivery.
Kyle Abbott followed in a similar vein in the first over of his second spell as Jos Buttler (1) top edged a short ball which the bowler collected on his run through.
Moeen Ali departed on four runs thanks to another superb catch by Amla at slip as he edged the ball high with the fielder having to leap in the air to take the ball above his head.
With England in trouble on 106/6, Root managed to hold the crumbling innings together with Chris Woakes (33) playing a nifty supporting role as they added 95 runs to the score.
Woakes carelessly gave away his wicket as he swiped at a Rabada delivery that carried to the gloves of wicketkeeper Quinton de Kock.
Root’s invaluable knock came to end as he lopped a Chris Morris ball to short fine leg where Tahir made no mistake with the catch.
Rabada took care of the English tale as he added the wickets of Adil Rashid (39) and Stuart Broad (6) to his two earlier wickets.
Independent MediaImran Tahir struck with three wickets within three overs before Kagiso Rabada planted the final nail as England were bowled out in the 4th ODI.
Original source: Tahir, Rabada send England packing