The Dutch had travelled to Tallinn with a 100 per cent record in Group D but were moments away from defeat after Konstantin Vassiljev scored twice following Arjen Robben's early goal.
They may have been unable to salvage a seventh successive win in the campaign but Van Persie's 93rd-minute spot-kick kept their march to Brazil very much on track.
With Hungary losing to Romania on the same evening, Holland's lead at the top of the group remained at a healthy six points.
The result was harsh on battling Estonia, who could have kept themselves in with an outside chance of reaching the play-offs with a victory.
A famous win had been within their grasp after Vassiljev cancelled out Robben's opener in the 17th minute and then added a second just before the hour.
There seemed little hint of that drama to come as Bayern Munich star Robben fired home after being played in by Van Persie within moments of the kick-off.
Wesley Sneijder then forced a save out of Sergei Pareiko and Van Persie was also denied by the goalkeeper before Daryl Janmaat shot wide.
Estonia equalised against the run of play when Vassiljev fired home from distance after being teed up by Henrik Ojamaa.
Robben twice went close to restoring Holland's lead in the moments that followed and Sneijder also shot wide.
Kevin Strootman spurned another chance for the visitors when he shot at Pareiko early in the second half.
The Dutch were made to pay for their profligacy in the 56th minute when Joel Lindpere played in Vassiljev and he made no mistake in front of goal.
Buoyed by his double strike, Vassilijev tried his luck from a 40-yard free-kick on the hour but missed the target.
Holland responded with Sneijder again testing the keeper, having another attempt blocked and then shooting wide.
Van Persie also headed at Pareiko from a Dirk Kuyt cross.
The game became scrappy as time ran down and with a number of stoppages further punctuating play, Holland's night seemed destined to end in frustration.
It might even have got worse for the Dutch had Vassilijev or Sergei Zenjov been able to convert chances in the dying moments.
But Holland continued to fight on and earned a reprieve when Van Persie was fouled in the penalty area by Raio Piiroja in injury time. The Manchester United striker got up and fired home the spot-kick to much relief.
There might even have been time for Holland to snatch the win but Sneijder shot wide from a Kuyt through-ball.