Heat 2 tablespoon vegetable oil over medium heat.
Add ground beef and brown it, using a wooden spoon to break it up for about 8 minutes.
Season with a pinch of salt and pepper. Taste it.
Add chopped shallots (or onion), bell pepper, and garlic, and cook for another 5 minutes.
Add 2 cups of beef stock OR 1 cup of red wine and 1 cup of beef stock.
Add drained beans and tomatoes (which I don’t drain), and all the spices.
Stir and bring to a boil for a couple of minutes.
Reduce heat to a simmer. At this point, it’s a good idea to taste again. Make sure the spices are balanced. Don’t worry about adding salt yet if it tastes under-salted. You might add more beef stock later, which will add more salt.
Cover and cook on low heat (when you lift the lid, it should just bubble but not boil) for about two hours.
Check and stir occasionally. If it gets too dry, add more beef stock.
Tip: If you can’t wait any longer or your chili is too runny after simmering for two hours, just remove the lid, crank up the heat and let it reduce to your desired thickness. Just make sure to stir regularly so the meat doesn’t get stuck to the bottom of the pan.
Add toppings. Serve and enjoy!