The best chili is not defined by what protein it contains. It is defined by depth - the layered, smoky, slightly sweet, deeply savoury complexity that comes from building flavour correctly, simmering long enough, and finishing with the ingredients that round and complete the dish.
This vegan chili has that depth. It has it from three varieties of bean (black beans for their earthy richness, kidney beans for their firm, meaty texture, and pinto beans for their creamy body), from chipotle peppers in adobo (smoke and heat and a specific, earthy complexity), from smoked paprika (background smokiness in every spoonful), and from a square of dark chocolate added in the final 10 minutes - an old chili trick that is not identifiable as chocolate but makes the spiced, tomatoey base taste rounder and more complete.
This is not chili where the beans are a substitute for something absent. This is chili where the beans are the point - treated with the same care and intention that good chili has always deserved, regardless of what protein is in the pot.
Great chili is built in layers. Each layer adds something the others don't provide.
Layer 1 - The mirepoix: Onion, pepper, garlic. The aromatic foundation. Cook them properly - long enough for the onion to soften completely and begin to caramelise, the pepper to soften, the garlic to turn fragrant and golden. 8 minutes minimum, 12 is better.
Layer 2 - The spice bloom: Dry spices (cumin, smoked paprika, chili powder, coriander, oregano) cooked in the hot oil for 90 seconds before any liquid is added. This is the most impactful single step in the recipe. Dry-roasting spices in fat releases fat-soluble aromatic compounds that cooking in liquid doesn't achieve - the spice flavour goes from surface-level to pervasive.
Layer 3 - The tomato base: Tomato paste cooked until slightly caramelised, then canned tomatoes crushed and simmered. The combination of concentrated tomato (paste) and fresh acidic tomato (tinned) produces more complexity than either alone.
Layer 4 - The smoke: Chipotle peppers in adobo - whole, finely chopped - and their adobo sauce. Smoked paprika throughout. A few drops of liquid smoke in the final 10 minutes if you want more depth. This layer is what makes the chili taste like it has been near a fire.
Layer 5 - The chocolate finish: One square (10g) of dark chocolate (85%+ cocoa) stirred in with 10 minutes to go. It melts into the chili and rounds the acid, spice, and sweetness into something more unified. It is not identifiable as chocolate - it tastes of depth.
Layer 6 - The acid and brightness: Apple cider vinegar and fresh lime juice added at the very end. Acid sharpens everything. Without it, chili can taste flat and slightly heavy; with it, every other flavour becomes more present.
Serves 6-8 | Active time: 20 minutes | Total time: 1 hour 15 minutes
Note: All three types can be replaced with any combination of your preferred beans. One large tin of a single bean variety also works - reduce the quantity to 600g drained beans for the correct ratio.
Heat 2 tbsp of olive oil in a large, heavy-based pot or Dutch oven over medium-high heat. Add the onions and peppers. Cook, stirring occasionally, for 8-10 minutes until the onions are completely soft and beginning to colour at the edges. Do not rush - this is the flavour foundation.
Add the garlic and chipotle peppers (with their adobo sauce). Cook for 2 minutes, stirring.
Add the tomato paste directly to the pot. Stir and cook for 60 seconds until it darkens slightly.
Add all the dry spices: cumin, smoked paprika, chili powder, ground coriander, dried oregano, and cayenne. Stir constantly for 90 seconds - the spices cook in the fat and tomato paste, releasing their aromatic compounds. The kitchen will smell extraordinary.
Add the crushed whole tomatoes, chopped tomatoes, vegetable stock, and soy sauce. Stir to combine, scraping any fond from the base of the pot.
Add the drained beans. Stir thoroughly to combine everything.
Bring to a simmer, then reduce the heat to medium-low. Simmer, stirring every 10 minutes, for 45-50 minutes until the chili has thickened significantly - it should hold its shape on a spoon rather than running freely - and the flavours have integrated into something unified and complex.
With 10 minutes remaining, add the square of dark chocolate. Stir until it melts completely into the chili. The immediate effect is subtle - the chili seems to round slightly, the acid and spice becoming more cohesive.
Taste at this point. Adjust:
In the final minute, add the apple cider vinegar and lime juice. Stir. Taste again - the acid brightens everything and should make the chili taste more vibrant and present than it did before.
Serve from the pot into warm bowls or over rice. Arrange toppings alongside - each person adds their own.
The toppings are not decoration. The vegan soured cream cools and enriches. The avocado adds fat and creaminess that the chili doesn't have. The pickled jalapeños add a fresh acidity. The fresh coriander lifts. The lime provides additional brightness. A properly topped chili bowl is a genuinely different and better experience than the same chili eaten plain.
Over rice: Long-grain white rice or brown rice - the chili sauce absorbs into the rice and the combination is the most satisfying single-dish version.
With cornbread: Classic pairing. The sweetness of a good cornbread against the spiced, smoky chili is one of the great comfort food combinations.
In baked potatoes: Open the baked potato, crush the interior slightly, spoon chili generously into and over. Top with vegan soured cream and spring onion.
As a nachos base: Spread tortilla chips on a sheet pan, spoon chili over, scatter with vegan cheese, bake at 200°C for 10 minutes until everything is hot. Top with cold avocado, soured cream, and fresh coriander.
Chili-stuffed peppers: Halve 4 large peppers and remove seeds. Fill with the chili, top with vegan cheese, bake at 190°C for 25 minutes.
This is one of the best make-ahead dishes in the collection. Chili improves significantly over 24-48 hours as the flavours integrate and deepen. The chocolate and chipotle notes in particular develop with time into something more complex than they are on day one.
Storage: Refrigerate for up to 5 days in a sealed container. The chili thickens considerably in the fridge - add a splash of water when reheating and stir over medium heat until loosened and hot.
Freezing: Freeze in individual or family portions for up to 4 months. One of the most practical freezer meals available - thaw overnight and reheat in 10 minutes.
Replace the red tomatoes, black beans, and kidney beans with: 2 × 400g cannellini beans, 200g dried green or white beans (cooked), 500ml of light vegetable stock, 1 tin of green chilies (or fresh diced jalapeños), and a large bunch of kale (added in the final 10 minutes). Replace smoked paprika with ground cumin and white pepper. The result is pale, creamy, and very different from the standard version - excellent with avocado and lime.
Add to the spice mix: 1 tsp cinnamon, ½ tsp allspice, ¼ tsp cloves. Serve over spaghetti rather than rice (the Cincinnati tradition), topped with vegan cheese and diced white onion. An unusual dish that is genuinely interesting.
Complete the onion, spice-bloom, and tomato paste steps on the hob. Transfer everything to the slow cooker. Cook on low for 8 hours or high for 4 hours. Add the chocolate and acid finish in the final 30 minutes. The slow cooker produces the most deeply integrated flavours - the beans break down slightly at the edges, thickening the sauce naturally.
Common Mistake: Under-seasoning the Beans Canned beans arrive already cooked and relatively flavourless. They absorb the chili's seasoning during the long simmer, but only if the chili is assertively seasoned to begin with. A chili that tastes well-seasoned before the beans are added will taste correct after 45 minutes of simmering. A chili that tastes slightly flat before the beans are added will taste flat throughout - the beans absorb flavour but don't contribute it. Season aggressively at every stage and taste constantly.
Yes - and the result is better. Dried black beans, kidney beans, and pinto beans, soaked overnight and simmered until tender (45-60 minutes before adding to the chili), produce a creamier, more complex bean than canned. Use 180g of dried beans per 400g can called for in the recipe. Add the cooked beans with 200ml of their cooking liquid - the starchy bean cooking liquid adds body to the chili.
Add more beans (additional pinto or black beans dilute the spice concentration), a tin of coconut cream (fat absorbs capsaicin), or more tomatoes. Sugar and dairy fat are the most effective spice counterbalancers, but for a vegan chili the coconut cream is the most effective option. Prevention: add chipotle gradually and taste before adding the full amount.
Simmer uncovered over medium heat for 15-20 minutes, stirring frequently. The liquid evaporates and the beans begin to break down slightly, thickening the sauce naturally. Alternatively, remove one cup of beans, mash them to a paste, and stir back in - the starch from the mashed beans thickens the sauce without affecting flavour.
🔗 Continue Cooking