An early strike from Ivan Sproule gave Northern Ireland their first home win in a friendly since April 1998.
Ivan Sproule gets away from Estonia's Alexander Dmitrijev
Sproule, making his first international start, blasted into the corner inside two minutes after a James Quinn flick-on had come off David Healy.
Estonia, 25 places above Northern Ireland in the Fifa rankings, had several chances to equalise but were kept out by keeper Maik Taylor.
Sub Steve Jones had a great chance to make it 2-0 but lifted the ball over.
Then Tarmo Neemelo skied a chance to equalise as the snow started to fall heavily midway through the second half at Windsor Park.
Sproule's strike - his first goal for his country - gave Northern Ireland a perfect start, the Hibs star firing beyond Arsenal goalkeeper Mart Poom.
Chris Brunt should have added a second in the seventh minute only to send a shot wide from a decent position.
Quinn had the ball in the net after 16 minutes only for his effort to be ruled out for offside.
There was a moment of danger for Northern Ireland a minute later when Andrei Sidorenkov broke clear but goalkeeper Maik Taylor booted his shot to safety.
Birmingham goalkeeper Taylor showed good reflexes to block shots from Enar Jaager and Andrei Stepanov in quick succession.
Northern Ireland boss Lawrie Sanchez made two changes at half-time, handing a debut to Scotland-born Brian McLean. Steve Jones was also included with Stephen Craigan and Sproule going off.
Jones should have added a second in the 55th minute but scooped a shot over from close-range.
Warren Feeney and Peter Thompson came on later as Sanchez switched his strike partnership. Grant McCann and Stuart Elliott also came on as substitutes.
Northern Ireland: Taylor, Duff, Craigan (McLean 46), McAuley, Capaldi, Sproule (Jones 46), Davis (Elliott 68), Baird, Brunt (McCann 68), Quinn (Thompson 59), Healy (Feeney 59).
Estonia: Poom, Jaager, Stepanov, Piiroja, Rooba, Rahn (Reim 78), Teever (Kuresoo 73), Dmitrijev, Neemelo, Lindpere (Oper 54), Sidorenkov (Ahjupera 84).
Referee: Pieter Vink (Holland)