This hearty black bean curry is packed with cozy Indian spices, made extra creamy with a generous splash of coconut milk and completely vegan. It's ready in just 25 minutes so it's perfect for busy weeknights when you still want something homemade and satisfying.

Jump to:
Quick overview
✅ High in plant-based protein & fibre
✅ Vegan, gluten-free & made with simple ingredients
✅ Ready in under 30 minutes
This black bean curry comes together in just a few simple steps. You start by gently frying the spices to release all those warm flavors, then add the tomatoes and let them cook down until soft and saucy. A splash of coconut milk turns everything beautifully creamy and the black beans go in last.
I use canned black beans here, which is what makes this curry so wonderfully quick. I HIGHYL recommend serving it with my No-Yoghurt Naan (a reader's favorite!) or some rice but if I'm being honest, naan wins every single time.
For more curry recipes check out my Butter Bean Curry, Indian Tofu Curry or Sweet Potato Red Lentil Curry.
Ingredients & substitution notes

- Olive oil: Can be swapped for rapeseed oil, coconut oil or any other neutral vegetable oil if that's what you have.
- Cumin seeds & coriander seeds: I used whole but ground works as well if you can't find whole seeds.
- Spices: Garam masala, curry powder, turmeric, and cinnamon (all of the spices are essential and can't be skipped)
- Shallot: You can use onion instead, but I love the milder, slightly sweeter flavor of shallots.
- Ginger: Grated and freshly minced for a little zing.
- Garlic: Minced
- Tomatoes: Fresh Roma tomatoes work best for a naturally sweet, rich sauce. If you don't have any you could use 1 can of canned tomatoes instead.
- Black beans: I use canned for speed, but you can absolutely cook them from scratch. White beans, kidney beans, or any bean you love work just as well here.
- Vegetable broth: I use one with minimal, clean ingredients.
- Coconut milk: Choose full- fat for extra creaminess and that rich, comforting curry texture.
- Cilantro for garnish: Fresh cilantro is classic, but parsley works well if that's your preference.
See recipe card for quantities.
Step-by-step photo instructions

Step 1: Fry cumin and coriander seeds in some olive oil over medium heat for about 1 minute. Then add the onion and fry another 2-3 minutes.

Step 2: Add ginger, garlic and the spices and saute for 1-2 minutes.

Step 3: Add the tomatoes and veggie broth and let simmer for a couple of minutes.

Step 4: Stir in black beans and coconut milk and let simmer for another 15 minutes.
Top tips
- Coconut milk: To make the curry extra creamy I recommend choosing full- fat coconut milk.
- Don't rush the tomatoes: Cook them down until soft and jammy for a richer sauce.
- Finish with fresh herbs: A handful of cilantro (or parsley) at the end lifts everything and I highly recommend not skipping it. You could also add a squeeze of lime or a drizzle of chili oil if you like it spicy.
- What you serve it with matters: My absolute favorite side dish here would be my homemade naan naan or coconut basmati rice, but naan is always my first choice.

Storage & freezing
- To store: Keep leftovers in an airtight container in the fridge for up to 3 days.
- To freeze: This curry freezes really well. Let it cool completely, then freeze in portions for up to 3 months.
- To reheat: Reheat gently on the stove or in the microwave, adding a splash of water or veggie broth if it thickens too much.
FAQs
Related recipes
Looking for more simple, one-pot recipes?
📖 Recipe

Black Bean Curry
Equipment
- 1 cutting board + knife
- 1 large pan (I prefer cast iron) + wooden spoon
Ingredients
- 2 tablespoon vegetable oil *olive or avocado
- 1 teaspoon coriander seeds
- 1 teaspoon cumin seeds
- 2 shallots *or sub white onion
- 3 garlic cloves *peeled & minced
- 1 inch (2.5 cm) piece ginger *peeled & minced or grated
- 2 teaspoon curry powder
- 1 teaspoon garam masala powder
- ¼ teaspoon cinnamon
- ¼ teaspoon turmeric powder
- ½ teaspoon salt
- 2 roma tomatoes *diced
- ½ cup (120 ml) veggie broth
- 2 15oz (2 425g) cans black beans *drained + rinsed
- 1 15oz (1 425g) can coconut milk
- fresh cilantro
Instructions
- Toast seeds: Heat the oil in a large (Dutch oven) pan over medium heat. Add coriander and cumin seeds, stirring frequently for about 1 minute until fragrant (but not burned).2 tablespoon vegetable oil, 1 teaspoon coriander seeds, 1 teaspoon cumin seeds
- Sauté shallots: Add shallots and cook for 2-3 minutes until softened.2 shallots
- Add spices: Stir in garlic, ginger, the spices and salt and fry for 1-2 minutes, stirring constantly to release the flavors.3 garlic cloves, 1 inch piece ginger, 2 teaspoon curry powder , 1 teaspoon garam masala powder, ¼ teaspoon cinnamon , ¼ teaspoon turmeric powder, ½ teaspoon salt
- Soften tomatoes: Add the chopped tomatoes and veggie broth. Cook for about 5-7 minutes, until the tomatoes soften.2 roma tomatoes, ½ cup veggie broth
- Simmer curry: Stir in the black beans and coconut milk. Bring to a gentle simmer, cover, and cook for 15 minutes. Taste and adjust salt and other spices to your liking.2 15oz cans black beans , 1 15oz can coconut milk
- Finish & serve: Top with fresh cilantro and serve with (homemade) naan or rice on the side.
Video
Notes
- Salt: The amount of salt actually needed will depend on how salted your veggie broth was. For me, ½ teaspoon was enough.
- Coconut milk: To make the curry extra creamy I recommend choosing full- fat coconut milk.
- Serving suggestions: I love serving this curry with my homemade naan or coconut basmati rice. Any type of flatbread will do the trick though.
- Storage: Store leftovers in an airtight container in the fridge for up to 3 days or freeze in portions for up to 3 months. Reheat gently with a splash of water or veggie broth if needed.





Katie says
This is really tasty and hearty. The spice combination intrigued me. I love spices and flavor, so I admit that I put heaping measurements of the spices, but the other ingredients just as the recipe listed. I would definitely make this again.
Katie says
Thanks so much- very happy to hear that you liked it 🙂