The extra-time goal came during a bad-tempered final that left the Netherlands furious with referee Howard Webb.
Iniesta settled South Africa 2010 four minutes before the final whistle when he controlled Cesc Fabregas' pass and volleyed home.
Bert van Marwijk led the remonstrations at the final whistle as Webb had incorrectly awarded a goal-kick to Spain moments before the goal, instead of a corner.
The English referee could also have given a foul on Eljero Elia in the build-up to the goal.
Prior to the winner at Soccer City, the showpiece was defined by 14 yellow cards, including two for Dutch defender John Heitinga, sent off in the second period of extra time.
Netherlands had to try to stifle their opponents as there was risk the European champions would seal the game with their early chances.
Sergio Ramos had the first, glancing Xavi's free-kick and forcing Maarten Stekelenburg to parry and get on his feet quickly to block Gerard Pique.
Ramos, from full-back, was providing a real attacking threat and tricked his way past Dirk Kuyt before his powerful cross was fortuitously cleared by Heitinga.
Next to go close was David Villa, who volleyed into the side netting after Iniesta sent a short corner over to the far post.
The Netherlands managed to halt Vicente del Bosque's men but they paid the price with yellow cards for Robin van Persie, Mark van Bommel and Nigel de Jong in the first half alone.
Aside from a clearance that almost dropped in when they were trying to give possession back after an injury to Carles Puyol, Van Marwijk's side struggled to create chances.
Iker Casillas was not forced into a save until stoppage time in the first half when Arjen Robben aimed a drive at the near post.
Bayern Munich winger Robben had a huge chance just after the hour mark after Wesley Sneijder threaded the ball behind the Spanish defence.
Robben sent Casillas the wrong way with his finish but the Spain captain thrust out a leg and diverted the ball wide.
Villa had a clear opportunity at the other end in the 70th minute after Jesus Navas, on as a substitute, crossed from the right. It needed Heitinga to block the close-range effort.
Ramos headed over from a corner and Robben raced through again before the end, with the Dutch winger furious as Puyol held him, but advantage was played.
Fabregas went though and missed a chance in extra-time but Iniesta made sure Spain would claim the title for the first time.
Netherlands (4-5-1): Stekelenburg; Van der Wiel, Heitinga, Mathijsen, Van Bronckhorst (Braafheid 115); Robben, Sneijder, Van Bommel, De Jong (Van der Vaart 99), Kuyt (Elia 70); Van Persie. Subs (not used): Vorm, Boschker, Boulahrouz, Ooijer, De Zeeuw, Schaars, Afellay, Babel, Huntelaar.
Spain (4-5-1): Casillas; Ramos, Puyol, Pique, Capdevila; Pedro (Navas 60), Xavi, Alonso (Fabregas 87), Iniesta, Busquets; Villa (Torres 116). Subs (not used): Valdes, Reina, Albiol, Marchena, Arbeloa, Martinez, Silva, Mata, Llorente.