LaRoche's two-out double in the third scored Ryan Zimmerman to put Washington ahead 3-0 and Desmond followed with his two-run blast to break the game open.
Danny Espinoza added three hits, including an RBI double, and Bryce Harper chipped in with two hits and an RBI for the National League East-leading Nationals.
Jordan Zimmerman (5-6) handled the Giants on two runs (one earned) over six innings, giving up seven hits but walking none while striking out seven as Washington took the opener of a three-game set.
Giants starter Tim Lincecum (3-9) was pounded for eight runs (seven earned) on nine hits, lasting just 3 1/3 innings.
Gregor Blanco went 3-for-5 with a two-run single for San Francisco, which came into the contest with a 1 1/2-game lead over the Los Angeles Dodgers in the NL West.
The contest was delayed by rain for an hour in the seventh inning.