Soups & Stews
This bean-only chili recipe delivers restaurant-quality depth without any meat—packed with smoky, spicy layers that make it a hearty centerpiece for any table. The secret lies in slow-cooked black beans, kidney beans, and chickpeas that develop tender, melt-in-your-mouth texture while absorbing bold spices like cumin, smoked paprika, and cayenne.
I’ve perfected this over years of testing, ensuring every spoonful is rich, satisfying, and full of umami.
The magic happens in the slow simmer, where beans break down just enough to create a thick, velvety base while retaining their structure. A blend of tomato paste, dark beer (or broth), and a touch of cocoa powder adds complexity that rivals traditional meat-based chilis.
Topped with avocado, cilantro, and a squeeze of lime, this dish balances heartiness with freshness—no one will guess it’s entirely plant-based.
Perfect for weeknight dinners, potlucks, or meal prep, this chili reheats beautifully and only gets better as flavors meld over time. Serve with cornbread, tortilla chips, or over rice to soak up every last drop of that smoky, spiced broth.
Whether you’re vegan, cutting back on meat, or just craving a bold, comforting bowl, this recipe delivers.
For extra depth, toast your spices in the pot before adding liquids—this unlocks their flavors and creates a fragrant base. The result? A chili so rich and satisfying, it’ll become your new go-to. Let’s get cooking!
Ingredients for bean only chili
Sixteen ingredients transform into a chili so rich and smoky, no one will guess it’s plant-based.
| Ingredient | Amount | Notes |
|---|---|---|
| Dry Black Beans 🌱 | 1 ½ cups | Unsoaked, rinsed thoroughly |
| Dry Kidney Beans 🌱 | 1 cup | Unsoaked, rinsed thoroughly |
| Chickpeas 🌱 | 1 cup | Drained, rinsed chickpeas |
| Diced Tomatoes (Canned) 🍅 | 2 cups | San Marzano preferred |
| Tomato Paste 🍅 | ½ cup | Squeeze tube or canned |
| Dark Beer (or Vegetable Broth) 🍺 | 1 ½ cups | Stout or porter preferred |
| Cocoa Powder 🍫 | 2 tbsp | Unsweetened for depth |
| Smoked Paprika 🌶️ | 2 tbsp | For authentic smoky flavor |
| Ground Cumin 🌿 | 1 ½ tbsp | Toasted for richer aroma |
| Cayenne Pepper 🔥 | 1 tsp | Adjust for heat preference |
| Garlic Cloves 🧄 | 6 cloves | Minced for bold flavor |
| Yellow Onion 🧅 | 1 whole | Diced, medium size |
| Extra-Virgin Olive Oil 🫒 | 2 tbsp | For toasting spices |
| Sea Salt 🧂 | 1 ½ tsp | Diamond Crystal preferred |
| Avocado (for serving) 🥑 | 1 whole | Sliced, ripe |
| Fresh Cilantro 🌿 | ¼ cup | Chopped, for garnish |
| Lime 🍋 | 1 whole | Juiced, for brightness |
The beans are the foundation, so pick quality dried varieties—none of that canned mushy stuff. Trader Joe’s has great bulk bins for black and kidney beans, or grab the Annie’s Homegrown canned beans if you’re short on time. Chickpeas add creaminess, but don’t skip rinsing them—they’re often briny straight from the can. The San Marzano tomatoes make all the difference here; their sweetness balances the smoky spices. If you can’t find them, any high-quality diced tomatoes will do, but avoid the watery, mushy brands.
No dark beer? Vegetable broth with a splash of balsamic vinegar mimics the depth perfectly. The cocoa powder is non-negotiable for that deep, almost meaty flavor—unsweetened Dutch-process works best. Short on smoked paprika? Regular paprika plus a pinch of liquid smoke gets you close. Toast your spices in the pot first—this unlocks their flavors and creates a fragrant base that’s worth the extra minute. For the garlic, I always use freshly minced rather than powder; it makes a noticeable difference in the final depth of flavor.
This chili tastes even better the next day as flavors meld. Store leftovers in an airtight container for up to 5 days in the fridge or freeze for 3 months. I double the batch every time—one for dinner, one for lunches. The avocado and cilantro should be added fresh when serving, so wait to slice them until you’re ready to eat. Lime juice brightens everything, so always have a wedge ready to squeeze over the top.
Why You'll Love This Recipe
- Here’s what sold me: a full pot for under $10. Black beans and kidney beans are dirt cheap, canned tomatoes stretch forever, and chickpeas add bulk without breaking the bank. It’s the kind of dish where I can feed my whole family and still have leftovers for lunch the next two days.
- No Meat, No Problem: I’ll be honest—this chili doesn’t need meat. The black beans and kidney beans soak up all the smoky tomato paste and canned diced tomatoes like a sponge, turning them into something hearty and rich. That chickpea boost? It’s the secret weapon for texture—creamy in spots, firm in others.
- One-Pot Magic: Between us, I’ve made chili that’s a mess of pots and pans. Not this one. Soak the beans overnight (or use a pressure cooker to cut that to 30 minutes), dump everything in one pot, and let it simmer. Stir once, taste, adjust, done. No chopping, no fuss—just flavor.
- Budget-Friendly Feast: Here’s what sold me: a full pot for under $10. Black beans and kidney beans are dirt cheap, canned tomatoes stretch forever, and chickpeas add bulk without breaking the bank. It’s the kind of dish where I can feed my whole family and still have leftovers for lunch the next two days.
Step-by-step instructions for bean-only chili with deep smoky flavor
This chili delivers rich, meaty depth without a single piece of meat—just beans, spices, and technique.
Toast the Spices for Maximum Flavor
Heat a dry skillet over medium heat and add the 2 tablespoons extra-virgin olive oil. Once shimmering, add the 6 minced garlic cloves, 1 whole diced yellow onion, 2 tablespoons smoked paprika, 1.5 tablespoons ground cumin, and 1 teaspoon cayenne pepper. Stir constantly for 3-4 minutes until the spices become fragrant and the onion softens.
This toasting step develops deeper, more complex flavors by releasing the essential oils in the spices. You'll know it's ready when the mixture smells intensely aromatic and the spices darken slightly. Remove from heat and transfer to a large pot—this aromatic base is the foundation of your chili's depth.
Sauté the Beans and Build the Base
In the same pot, add the 1.5 cups dry black beans, 1 cup dry kidney beans, and 1 cup chickpeas. Stir to coat them in the spiced oil, then pour in the 2 cups diced tomatoes (canned) and 0.5 cup tomato paste. Bring to a gentle boil over medium-high heat, then reduce to a simmer.
Here's the thing—don't skip the initial boil. This step helps break down the beans' skins slightly, making them creamier as they cook. Simmer uncovered for 10 minutes, stirring occasionally, until the mixture thickens slightly and the raw bean taste diminishes. The tomatoes will begin to break down, releasing their natural sweetness.
Add Liquids and Simmer Low and Slow
Pour in the 1.5 cups dark beer (or vegetable broth) and the 2 tablespoons cocoa powder, stirring until fully combined. Add the 1.5 teaspoons sea salt and bring the mixture to a boil once more. Once boiling, reduce heat to low and let it simmer uncovered for 45-60 minutes, stirring occasionally.
This long simmer is crucial—it allows the beans to soften completely and the flavors to meld. You'll notice the chili gradually thicken as moisture evaporates. The cocoa powder adds an unexpected depth that mimics the richness of meat, while the beer contributes a malty complexity. Taste after 30 minutes and adjust salt if needed, but trust the process—this chili needs time to develop its character.
Finish with Fresh Aromatics
Once the beans are tender (they should be creamy but not mushy), remove the pot from heat. Stir in the 0.25 cup chopped fresh cilantro and the juice of the 1 whole lime, reserving a few slices for garnish. Let the chili rest for 10 minutes to allow the flavors to settle.
This resting period is where the magic happens. The lime brightens the deep, smoky flavors, while the cilantro adds a fresh herbal note that cuts through the richness. The chili should have a thick, stew-like consistency with a glossy sheen. If it's too thick, stir in 2-3 tablespoons of water to reach your desired texture. Serve immediately with slices of the 1 whole avocado on top for a creamy, cooling contrast.
Pro Tips For Making Bean Only Chili
- SOAK BEANS SEPARATELY: I learned this the hard way—soaking black beans and kidney beans together means one type will always stay undercooked. Black beans soften faster; give kidney beans their own 8-hour soak (or quick 2-hour boil) before combining. Chickpeas? Toss them in unsoaked—they handle the slow simmer better raw.
- BURN THE TOMATO PASTE: Yes, really. Stir the tomato paste into the pot and let it darken for 3-4 minutes on medium-high heat before adding liquids. This caramelizes the sugars and deepens the flavor more than any extra spice ever will. (Your future self will notice the difference.)
- SKIP THE CROWDED POT: Resist the urge to fill the pot to the brim—beans expand like crazy. Start with 2 cups of liquid per 1 cup of drained beans, then add more as needed. A lidless pot lets you monitor water levels without guessing. (Trust me, you’ll regret the sloppy overflow.)
- SALT THE CHICKPEAS: Toss chickpeas in 1 teaspoon of salt before adding them to the pot. It sounds weird, but it prevents them from turning mealy and guarantees they absorb the chili’s flavors instead of staying bland. (I was skeptical until I tried it—now it’s non-negotiable.)
Pro cooking tips for bean only chili
Spice Toasting Secrets
Toast your spices in olive oil for 3-4 minutes—this unlocks their full flavor potential. The key is medium heat and constant stirring to prevent burning. I use smoked paprika and cumin first because they have the strongest aroma, then add cayenne for heat.
This step creates a fragrant base that builds the chili’s depth from the start. 🌶️
Bean Prep Matters
Rinse dry beans thoroughly before cooking to remove debris, but never soak—this leaches nutrients. For extra creaminess, I add chickpeas to the mix, which break down beautifully during the long simmer.
The combination of black beans, kidney beans, and chickpeas gives you both texture and heartiness. Trust me, the texture difference is noticeable!
Low and Slow Wins
Simmering at low heat for 45-60 minutes is non-negotiable—this is where the magic happens. The beans soften completely while absorbing all those smoky, spiced flavors. I like to stir occasionally to prevent sticking, but don’t over-mix or you’ll break up the beans too much.
Patience here pays off with a velvety, rich chili. ⏳
Cocoa Powder Hack
The 2 tablespoons unsweetened cocoa powder might seem unusual, but it adds a deep, almost meaty richness. I use Dutch-process because it’s smoother and less bitter. If you’re worried about sweetness, don’t be—it’s purely for depth. This is the secret ingredient that makes this chili taste so satisfyingly hearty. 🍫
Beer vs. Broth
Dark beer adds a malty complexity that’s hard to replicate with broth. If you don’t drink alcohol, use vegetable broth with 1 tablespoon balsamic vinegar for a similar depth.
The beer’s bitterness balances the sweetness of the tomatoes, creating a well-rounded flavor. I always use stout or porter—they’re the most flavorful options. 🍺
Resting Before Serving
Let the chili rest for 10 minutes off the heat before serving. This allows the flavors to meld and the texture to set. I also like to add lime juice and cilantro at the end—this brightens everything and adds a fresh contrast to the smoky, spiced base.
Don’t skip this step, or you’ll miss out on the best flavor development. 💡
Nutrition facts
Frequently asked questions
Can I substitute canned beans for dried beans in this recipe?
Yes, but adjust the cooking time! Use 2 (15-oz) cans each of black beans, kidney beans, and chickpeas (total 3 cans) instead of dried. Drain and rinse them well, then add them directly to the pot after toasting the spices. Since canned beans are pre-cooked, they won't need the full 45-60 minute simmer—just 20-25 minutes to absorb flavors. The texture will be slightly softer but still delicious.
How can I make this chili thicker or thinner?
For a thicker chili, simmer uncovered for an extra 10-15 minutes to reduce the liquid. If it's too thick, stir in 2-3 tablespoons of water or broth at the end. For a thinner consistency, add ½ cup broth or beer during the final 10 minutes of simmering. The ideal texture should coat the back of a spoon but still be spoonable.
What if I don’t have dark beer? Can I use something else?
Use 1.5 cups vegetable broth and add 1 tablespoon balsamic vinegar for depth. For extra richness, stir in 1 teaspoon soy sauce or miso paste—this mimics the malty, umami notes of beer. If you have coffee, add 1 tablespoon instant espresso powder to the cocoa powder for a deeper, almost "meaty" complexity.
Is this chili naturally gluten-free?
Yes, but double-check your ingredients! The recipe is naturally gluten-free as written, but ensure your tomato paste, broth, and spices have no hidden gluten. For extra safety, use certified gluten-free smoked paprika and cocoa powder. The beer substitution (broth + balsamic) is also gluten-free if you choose a gluten-free broth.
Can I make this chili in a slow cooker or Instant Pot?
Slow cooker: Combine all ingredients (except avocado, cilantro, and lime) in the slow cooker and cook on low for 6-8 hours or high for 3-4 hours. Instant Pot: Sauté spices as directed, then add all ingredients (except garnishes) and pressure cook for 20 minutes on high pressure. Release pressure naturally, then stir in lime and cilantro. Both methods work, but the stovetop version gives you more control over texture.
