The Impact, who opened with wins in Seattle and Portland to match their total away victories last year, became the first Major League Soccer team to win three games this campaign.
Bernier scored on 34 minutes after Toronto's Ashtone Morgan fouled Andres Romero in the penalty area. Bernier, Montreal's MVP last season, hesitated on approach to his penalty kick and sent Reds goalkeeper Joe Bendik diving to his right before placing the ball into the opposite corner.
Di Vaio made it 2-0 just before halftime when Davy Arnaud sent a ball forward for Di Vaio, who skipped around Bendik to double the home team's advantage.
Toronto reduced the deficit through Robert Earnshaw's 68th minute penalty, but couldn't find an equalizer.
Eddie Johnson tapped in a perfectly placed cross from Steve Zakuani in the 13th minute and Seattle held the lead until Wallace scored in the final minutes when Seattle failed to clear the ball from danger and Andrew Jean-Baptiste's centering pass found Wallace completely unmarked.
New York will rue a series of missed chances as it outshot D.C. United 23-4, with France superstar Thierry Henry failing to find the net from his 10 shots at goal.
Elsewhere, Justin Morrow scored in the 74th minute to earn the San Jose Earthquakes a 1-1 draw, after The Crew had taken the lead minutes earlier through Brazilian defender Glauber's header from a Federico Higuain corner.
In Sandy, Utah, Alvaro Saborio scored late in the second half to help Real Salt Lake to a 1-1 draw and a share of the points against the Colorado Rapids in the first leg of the Rocky Mountain Cup rivalry series.
In other games Saturday, the Chicago Fire earned its first point of the season in a 0-0 draw at Sporting Kansas City and Jack McInerney scored his second goal in two games to lift the Philadelphia Union to a 1-0 win over the New England Revolution.