Heat a Dutch oven over medium-high heat (no oil needed) and add the ground beef, breaking into chunks. Let it sit undisturbed for 2–3 minutes to develop a crust, then break into crumbles and cook until no pink remains, about 6–8 minutes total.
Use a slotted spoon to transfer the browned beef to a plate, leaving about 2 tablespoons of fat in the pot and draining any excess.
Reduce heat to medium, add the diced onion to the pot, and cook for about 5 minutes until softened and translucent. Add the minced garlic and cook for 30 seconds, then stir in the tomato paste and cook for 1 minute until slightly darkened.
Pour in the beef broth, scraping up all the browned bits from the bottom of the pot, then stir in the crushed tomatoes and return the beef to the pot. Add all seasonings (chili powder, cumin, smoked paprika, oregano, bay leaf, salt, black pepper, and cayenne if using) and stir to combine.
Stir in the diced potatoes and carrots, bring the stew to a boil over high heat, then reduce to a gentle simmer. Cover with the lid slightly ajar and cook for 20 minutes, stirring occasionally.
Once the potatoes are fork-tender, stir in the bell pepper, corn, pinto beans, and kidney beans. Simmer uncovered for 15 more minutes until flavors meld and the stew thickens slightly.
Remove and discard the bay leaf, taste and adjust seasoning with salt and pepper, then let the stew rest off the heat for 5 minutes before ladling into bowls with your favorite toppings.