The Dutch, who had travelled to Tallinn with a 100 per cent record in Group D, were moments away from defeat after Konstantin Vassiljev cancelled out Arjen Robben's first-minute effort and added another.
Time looked to be running out for Louis van Gaal's side but Van Persie spared their blushes in the third minute of stoppage time after being fouled by Raio Piiroja.
The Dutch remain six points clear at the top but Romania moved into second with a 3-0 defeat of rivals Hungary in Bucharest.
Ciprian Marica set them on their way after just two minutes with Mihai Pintilii adding a second and Cristian Tanase completing the scoring late on.
Turkey thrashed Andorra 5-0 in the other match in Group D with a hat-trick from Umut Bulut and further strikes from Burak Yilmaz and Arda Turan.
Reigning champions and European Championship winners Spain took a firm grip on Group I as they beat Finland while France were held in Georgia.
Jordi Alba put the Spaniards in charge early on in Helsinki before Manchester City's in-form striker Alvaro Negredo made victory certain four minutes from time.
France had to settle for a goalless draw in Tbilisi and now trail Spain by three points.
Group A leaders Belgium took another stride towards qualification with a 2-0 win over Scotland at Hampden Park.
Steven Defour opened the scoring seven minutes before the break and Everton striker Kevin Mirallas made victory certain in the final minute.
Second-placed Croatia lost ground as they were held 1-1 by rivals Serbia in Belgrade.
Mario Mandzukic put Croatia ahead after 53 minutes but Aleksandar Mitrovic responded 13 minutes later. Both sides ended with 10 men after Serbia's Nemanja Matic and Croatia's Josip Simunic were sent off.
Gareth Bale, who became the world's most expensive player by joining Real Madrid last weekend, stayed on the bench as Wales were beaten 2-1 in Macedonia in the other Group A game.
An Aaron Ramsey penalty cancelled out Ivan Trickovski's early effort but Aleksandar Trajkovski won it in Skopje 10 minutes from time.
Cristiano Ronaldo scored a quickfire second-half hat-trick as 10-man Portugal survived a scare to beat nine-man Northern Ireland 4-2 in a dramatic encounter in Belfast.
Bruno Alves volleyed Portugal ahead but Gareth McAuley headed an equaliser before the visitors had Helder Postiga sent off for a head-butt.
Jamie Ward capitalised further to put Northern Ireland ahead but Chris Brunt's dismissal allowed Portugal a way back in.
Ronaldo headed home in the 68th and 77th minutes to put the visitors back in front and he finished the job with a free-kick after Kyle Lafferty was sent off.
The victory took Portugal back above Russia at the top of Group F after Fabio Capello's men saw off Luxembourg 4-1 in Kazan earlier in the day.
Alexander Kokorin grabbed two, including one inside the opening 20 seconds, while Alexander Kerzhakov and Alexander Samedov were also on target. Captain Aurelien Joachim claimed a Luxembourg consolation.
Italy moved seven points clear of Bulgaria at the top of Group B with a 1-0 win over their closest challengers in Palermo.
Alberto Gilardino scored the only goal after 38 minutes of what had been a crunch clash for Italy, who were missing Mario Balotelli, Dani Osvaldo and Riccardo Montolivo through suspension.
The consolation for Bulgaria after missing the opportunity to move within a point of Italy was that they remained second in the group.
The Czech Republic suffered a shock 2-1 loss to Armenia as Gevorg Ghazaryan struck in the closing moments for the visitors in Prague.
Tomas Rosicky looked to have claimed a draw by cancelling out Karlen Mkrtchyan's opener but Ghazaryan's last-gasp effort kept Armenia's qualification hopes alive.
Denmark won 2-1 in Malta courtesy of a Leon Andreasen effort and a Ryan Camilleri own goal.
Sweden boosted their play-off hopes by claiming second spot in Group C outright after coming from behind to beat the Republic of Ireland 2-1 in Dublin.
Johan Elmander and Anders Svensson were on target after Robbie Keane's 60th international goal had put the Irish ahead.
The result took the Swedes three points ahead of Ireland and Austria, who were beaten 3-0 by group leaders Germany in Munich.
Miroslav Klose, Toni Kroos and Thomas Muller were on target for the Germans, who remain five points clear at the top.
In the clash between the group's bottom two, a Kairat Nurdauletov penalty and an Andrey Finonchenko goal saw Kazakhstan come from behind to beat the Faroe Islands 2-1.
England beat Moldova 4-0 at Wembley to move ahead of Montenegro at the top of Group H.
Danny Welbeck struck twice after earlier efforts from Steven Gerrard and Rickie Lambert.
Montenegro were held 1-1 in Poland after Robert Lewandowski cancelled out Dejan Damjanovic's early goal.
Ukraine hammered San Marino 9-0 in Lviv with eight different names on the scoresheet. Yevhen Khacheridi was the only player to score more than one.
Johann Gudmundsson completed a hat-trick in injury time as Iceland came from 4-1 down to hold Group E leaders Switzerland to a 4-4 draw in Berne.
Gudmundsson's third-minute opener looked to have counted for little as Stephan Lichtsteiner hit back with two and Fabian Schaer and Blerim Dzemaili (penalty) also scored scored for the Swiss.
But Kolbeinn Sigthorsson began the fightback and Gudmundsson netted twice more.
Tarik El Younoussi and Blackburn's Josh King were on target as Norway beat Cyprus 2-0 in Oslo to move second in the group. Kevin Kampl's goal gave Slovenia a 1-0 win over Albania.
Group G leaders Bosnia-Herzegovina lost 1-0 to Slovakia after a late Viktor Pecovsky goal. They now lead only on goal difference from Greece, who beat Liechtenstein 1-0 with a Konstantinos Mitroglou strike.
Nauris Bulvitis and Arturs Zjuzins struck as Latvia held off neighbours Lithuania 2-1 in new manager Marian Pahars' first competitive game.