Step 1: Soak the Beans - Place the dried pinto beans in a large bowl and cover them with cold water by at least 4 inches. Stir in 2 tablespoons of kosher salt until dissolved. Let them soak at room temperature for 8–12 hours. Once soaked, drain and rinse thoroughly.
Step 2: Simmer the Beans - Transfer the soaked beans to a Dutch oven. Add the chicken stock, bay leaves, 2 teaspoons of salt, and the epazote if using. Bring to a boil over high heat, then reduce to a gentle simmer. Cover and cook for about 45 minutes, or until the beans are just tender.
Step 3: Cook the Bacon and Aromatics - While the beans cook, heat a large skillet over medium-high heat. Add the diced bacon and cook, stirring often, until the fat renders and the edges of the bacon start to brown, about 5 minutes. Add the diced onions and minced chiles to the skillet and sauté until softened and lightly browned, about 4 minutes. Stir in the minced garlic and cook for another 30 seconds, just until fragrant.
Step 4: Build the Flavor Base - Add the fire-roasted tomatoes to the skillet and scrape up any browned bits from the bottom. Cook for about 3 minutes, until the liquid thickens and the mixture begins to sizzle.
Step 5: Combine and Simmer - Uncover the Dutch oven and stir in the bacon-tomato mixture. Continue cooking the beans uncovered for another 20 minutes, stirring occasionally, until the broth has thickened into a rich, creamy consistency.
Step 6: Finish and Serve - Taste and adjust seasoning with salt if needed. Remove the bay leaves, stir in freshly chopped cilantro, and serve hot.
