Heat a large skillet over medium-high heat and stir in ground beef and onion. Cook and stir until beef is crumbly, evenly browned, and no longer pink, about 10 minutes. Drain and discard any excess grease. Stir in ketchup, water, brown sugar, Worcestershire sauce, mustard, vinegar, chili powder, garlic powder, onion powder, and salt.
Bring beef mixture to a boil over high heat. Reduce heat to low; cover and simmer until sauce has thickened, 30 to 40 minutes. Serve on buns.