Heat the olive oil in a large saucepan over high heat. Stir in the onion and garlic; cook and stir just until you start to smell the garlic, 2-3 minutes. Add the ground beef and cook, stirring frequently, until crumbly and no longer pink, about 5 minutes.
Remove from heat and stir in the tomato sauce, tomatoes, and water. Season with the chili powder, cumin, salt, black pepper, oregano, cayenne, and sugar. Place the mixture over medium heat and bring to a boil. Reduce heat to low, cover and simmer for about 1 hour.
Remove the cover and stir in the beans. Replace the cover and continue cooking until fully heated through, about 15 minutes.