In a Dutch oven or large saucepot with a lid, fry bacon over medium heat until crispy, about 6–8 minutes. With a slotted spoon transfer to a paper towel-lined plate.
In the same pot over medium-high heat, brown beef in bacon fat. Transfer to another paper towel-lined plate with a slotted spoon.
Sauté onions in the same bacon fat over medium heat until translucent, about 3 minutes. Stir in the garlic, carrots, and celery. Sauté for another 3–5 minutes, until slightly softened.
Stir in spices and toast for 1 minute. Stir in tomato paste and cook for 2–3 minutes. Add chipotle, if using.
Add beans, return beef to the pot and pour over enough stock to just cover the chili. Reduce heat to low and simmer.
Add in chopped pepper, season with salt and pepper and simmer, covered, for 15–20 minutes or until vegetables are tender.
Stir in bacon and garnishes, taste and adjust seasoning if necessary.