Davis put the Dynamo (9-6-6) ahead 1-0 in the 10th minute converting the penalty kick inside the near post.
Bruin extended the lead to 2-0 in the 31st minute, taking an Oscar Boniek Garcia pass at the top of the box and sending a right-footed shot inside the near post.
Columbus (6-11-5) cut the lead to 2-1 on an own goal by Houston's Kofi Sarkodie in the 75th minute.
Weaver upped the Dynamo's lead to 3-1 in the 85th minute as Garcia played a ball into the upper box that Bruin laid off to Weaver, who sent a shot inside the near post.
Columbus, which has lost three in a row, nearly tied it at one in the 12th minute on a Jairo Arrieta shot from the upper center box, but Houston goalkeeper Tally Hall came off his line to make a kick save.
Off a corner in the 22nd minute, Arrieta headed one back toward the goal inside the goalkeeper's box, but Hall made the save.