Heat the olive oil in a large pot over medium-high heat (we use a 6-quart enameled Dutch oven). Add the beef and arrange it in one layer. Cook for 3 minutes.
Stir well, gently scraping the bottom of the pot. Cook for another 7–8 minutes, stirring occasionally, until the liquid cooks out.
Lower the heat to medium. Add the onions and cook for 3 minutes, stirring occasionally.
Add the garlic and cook for 1 minute, stirring frequently.
Add the chili powder, salt, garlic powder, cumin, black pepper, and cayenne pepper. Stir well until combined.
Add the diced tomatoes, beef broth, bay leaf, and dried chile peppers (if using), and stir. Raise the heat to high and bring the liquid to a boil (this will take about 5–6 minutes).
Lower the heat to medium-low, cover, and simmer for 30 minutes to let the flavors develop, stirring occasionally.
Raise the heat to medium. Add the red beans and stir. Cook half-covered until the chili starts to simmer. Uncover and cook for 45–55 minutes, or longer if needed, until it thickens.
Stir occasionally at first, then more often as the chili thickens to prevent sticking. Keep it at a simmer, lowering the heat as needed.
Remove the bay leaf (or leaves). The dried chile peppers can be left in or removed.
Taste and add salt if needed. As a reference, we added ¼ teaspoon to ours.
Serve with your favorite toppings and enjoy!