Tahir wrecked Pakistan's middle order with figures of 4-53 to bowl them out for 191 in 44.3 overs after they were set a challenging 260-run target at Sheikh Zayed Stadium.
The emphatic win gives South Africa a 2-1 lead in the five-match series. Both teams will meet again at the same venue on Friday before the series is rounded off in Sharjah on Monday.
South Africa won the first match in Sharjah by one run while Pakistan won the second match in Dubai by 66 runs. South African captain AB de Villiers was delighted with the victory which he said was a good all round performance.
"I am very happy with our performance, we stuck to the basics and got a few partnerships going," he said. "We lost a couple of wickets at the wrong time but it was a better performance today and our bowlers came to the party.".
His Pakistan counterpart Misbah-ul Haq was frustrated by several batsmen not learning from previous mistakes. "It's again the same problem with us in the batting order and we couldn't transform a good start into a big one, we kept losing wickets to Tahir and that's what made the difference," said Misbah.
Tahir, who conceded 18 in his first two overs, returned for a second spell, triggering a batting collapse which saw Pakistan lose five wickets for 30 runs.
Tahir trapped Misbah (19), caught and bowled Umar Akmal (seven) and Asad Shafiq (11) caught at cover to leave Pakistan struggling at 116-7. Wahab Riaz, who top-scored with 33, added 61 for the eighth wicket with Sohail Tanvie (31) but it only delayed the inevitable.
Pakistan had raced to 50 by the eighth over as Ahmed Shehzad, who hit half-centuries in the first two games, hit three boundaries off Lonwabo Tsotsobe in the fourth over and then added two more off Morne Morkel in the next.
But spearhead Dale Steyn, who missed the first two matches to rest at home, struck in his second over, removing Shehzad caught in the slip with a sharp outgoing delivery.
Two runs later, Mohammad Hafeez played Morkel (2-35) straight into the hands of point after making 15. Misbah and Umar Amin (13) attacked Tahir with four boundaries in his first two overs but the leg-spinner had the last laugh, taking three wickets in the space of 31 runs.
It was Jean-Paul Duminy (64) and Faf du Plessis (55) who anchored the South African total after they won the toss and batted. Duminy hit three boundaries off 89 balls and gave the innings much needed impetus with a 66-run fifth wicket stand with David Miller (34), adding 65 in the last ten overs.
Du Plessis had steadied the innings during his 60-ball knock, adding 77 for the second wicket with Quinton de Kock who made 40 from 57 balls. Hashim Amla was dismissed for 10 in the fifth over.
South Africa were forced to make three changes from the side which lost the second match by 66 runs in Dubai, bringing in Amla, Steyn and De Kock.
Leg-spinner Shahid Afridi (2-40) derailed the innings by dismissing De Kock and Du Plessis in quick succession, both stumped. Du Plessis hit eight boundaries while De Kock stroked five.
Paceman Mohammad Irfan finished with 3-45 in his 10 overs. When South Africa looked set for a big total with Duminy and Miller at the crease, off-spinner Saeed Ajmal (2-38) dismissed Miller before Tanvir had Duminy caught at mid-wicket off a misjudged pull.