D.C. United scored on all three shots on goal -- two by Kamara -- for a 3-0 halftime lead, then held off a furious Crew rally to move to 2-0-2 in the past four games.
Columbus has allowed eight goals in the past two games after conceding just 12 in the first 15 matches.
The Crew got goals by Kevin Molino in the 65th and Lucas Zelarayan six minutes later but Reyna quieted the crowd with a shot from distance in the 74th minute for his second goal of the season to make it 4-2.
Kamara's goal in the 19th minute came two minutes after Hamid, playing for a third straight shutout, had to leave with a leg injury sustained when he sprinted 30 yards to poke the ball from Erik Hurtado.
Ex-Crew keeper Jon Kempin replaced Hamid and made two saves.
Kamara struck first when a blunder on the ball by defender Aboubacar Keita gave him a breakaway to slot a shot from 11 yards.
In the 40th, Reyna was unmarked for a header from a pressure-free service on the left flank by Andy Najar.
Kamara scored his ninth goal, the third this season against his former team, with a penalty kick in the third minute of first-half stoppage time after Jonathan Mensah's bad touch forced him to foul Kevin Paredes in the box.
Molino scored his first goal of the season to make it 3-1 off a pass from Gyasi Zardes, who entered in the 56th minute after helping the U.S. men's national team defeat Mexico 1-0 in the final of the CONCACAF Gold Cup on Sunday.
Zelarayan, named to the MLS All-Star team on Wednesday, scored on a rebound of a Molino shot off the post for his sixth goal.