Warm the pot: Heat the olive oil in a large pot or Dutch oven over medium heat. Add onion, bell pepper, and carrots. Cook, stirring, until softened, about 5–6 minutes.
Add garlic and beef: Stir in the garlic and cook 30 seconds.
Add the ground beef, breaking it up with a spoon. Cook until browned and no longer pink, about 5–7 minutes. Spoon off excess fat if needed.
Season well: Sprinkle in chili powder, cumin, smoked paprika, oregano, red pepper flakes (if using), salt, and black pepper.
Stir for 1 minute until the spices smell toasty.
Tomato base: Add the tomato paste and stir to coat the beef and veggies. Pour in crushed tomatoes, diced tomatoes, and broth. Stir to combine.
Beans and veggies: Add the kidney beans, black beans, and zucchini.
Bring to a gentle boil, then reduce to a steady simmer.
Simmer low and slow: Partially cover and simmer for 25–35 minutes, stirring occasionally, until the chili thickens and the flavors meld. Add a splash of water if it gets too thick.
Finish with brightness: Stir in the lime juice and taste. Adjust salt, pepper, and heat as needed.
Serve: Ladle into bowls and top with cilantro, avocado, or a spoonful of Greek yogurt if you like.