The recent win in Belfast has put Michael O'Neill's team two points ahead of Bulgaria. A draw in the upcoming match against Luxembourg on Monday could secure their position as the champions of Group 3 and elevate them out of League C.
After last month's 5-0 win over Bulgaria this was much harder work and O'Neill's frustration was obvious late in the first half.
But Ballard headed the hosts in front five minutes into the second half and 10 minutes later referee Luis Godinho was sent to the monitor to spot a handball from Kirill Pechenin, allowing Dion Charles to score his fourth international goal from the penalty spot.
Northern Ireland had not previously won more than three in a row at home since 2016, when they won six, while this was a fourth successive clean sheet at home for the first time since 2021.
TrendingThe biggest question mark over Northern Ireland's team selection before the night was who would start in goal with Bailey Peacock-Farrell back from injury, but O'Neill stuck with teenager Pierce Charles on the night his brother Shea
captained the side.
When these two sides met last month in Zalaegerszeg, Hungary, Northern Ireland dominated the first half but failed to take their chances, and were then frustrated after the break as Belarus sat much deeper.
It was no surprise to see Carlos Alos' side go with the latter tactic from the start at Windsor Park, challenging Northern Ireland to force their way through a low block, and it did not prove easy.
Dion Charles prodded over after Pechenin gave away possession inside the box and Shea Charles brushed the side-netting with a free-kick. Conor Bradley then burst into the box and sent in a low ball which needed only a flick which Dion
Charles could not provide.
There were more nearly moments, not least when Bradley beat three defenders on a run through the box but failed to get a shot away, and it was goalless at the break.
Northern Ireland were immediately on the attack in the second half as the lively Brodie Spencer crossed from the left, but Dion Charles could not keep his header down.
Almost as quickly there was a chance for Aleksandr Martynovich, who fired over after a free-kick, but this Belarus side have now failed to score in seven of their last nine, and it was not hard to see why.
The breakthrough came in the 50th minute, perhaps unsurprisingly from a set-piece. Shea Charles' corner somehow got beyond the Belarus defenders at the near post, and Ballard - just back from injury - had an easy task to nod home, scoring his third goal in five internationals.
Ten minutes later, Pechenin moved his arms as he blocked Shea Charles's free-kick in the box, and after checking the screens Godinho awarded Northern Ireland their first penalty in 33 games, which Dion Charles duly tucked away.
Isaac Price, whose hat-trick lit up Windsor Park against Bulgaria, almost scored a superb third in the 79th minute, latching on to a flick from substitute Josh Magennis and sending a 20-yard shot just wide of the post.
Pierce Charles had a couple of difficult moments dealing with high balls in the closing stages but the 19-year-old emerged with his third clean sheet in as many international appearances, while Brighton U21s defender Ruairi McConville came on to make his debut five minutes from time.
The teenager could be needed again on Monday as Ciaron Brown picked up a disputed late yellow card for time-wasting which will rule him out of the trip to Luxembourg.
Northern Ireland host Belarus on Friday November 15 as their Nations League campaign continues.