Heat olive oil in a large pot or Dutch oven over medium-high heat. Brown the ground beef for 5-7 minutes, breaking it into small pieces as it cooks, until no pink remains. Drain excess fat if needed, leaving about 1 tablespoon for flavor.
Add diced onion to the beef and cook for 3-4 minutes until softened and fragrant. Stir in minced garlic and cook for another 60 seconds, being careful not to burn it. This aromatic base builds the savory foundation for your bowl.
Stir in tomato paste and cook for 2 minutes, stirring constantly to prevent sticking. Add all spices (chili powder, cumin, paprika, oregano, salt, and black pepper) and stir well to coat the meat. Cook the spice mixture for 1-2 minutes to bloom the flavors and deepen their intensity.
Pour in crushed tomatoes and beef broth, stirring to combine all ingredients thoroughly. Add the bay leaf and bring the mixture to a gentle boil. This hearty savory beef chili recipe needs proper heat initially to develop flavors, then gentle simmering prevents burning.
Reduce heat to low and add both drained kidney beans and black beans. Simmer uncovered for 35-40 minutes, stirring occasionally to ensure even cooking and prevent sticking. The longer simmer allows spices to meld and creates deeper complexity.
Taste and adjust seasonings as needed before serving. Remove the bay leaf carefully from the pot. Let it rest for 5 minutes if you have time, though it's ready to serve immediately.