This post may contain affiliate links. Please read our disclosure policy.
This vegan butter chicken features tofu simmered in a rich and creamy curry sauce made with coconut milk, tomatoes, fresh ginger, and warm spices. The tofu is torn into thick pieces and double air-fried with a yogurt marinade in between, resulting in chewy, well-seasoned pieces with slightly charred edges!

I’m back with another plant-based take on one of the most loved Indian dishes in the world, butter chicken! Despite the name, there is obviously no chicken here. Instead, I rely on tofu that is torn into thick pieces and air-fried twice to create chewy, slightly charred, and meaty pieces that even tofu skeptics will find convincing. I might be wrong, but I truly believe that it’s the recipe that can change the minds of tofu haters.
Oh, and the perfectly-spiced sauce is just as rich and flavorful as what you’d get at a restaurant. Arguably better, because you made it and it’s much less oily!
⭐️ Why This Recipe Works
- Double air-fry technique. Traditional butter chicken gets its distinctive flavor from tandoor-charred chicken. The high heat caramelizes the marinade, creating a thin crust with charred edges. Here, the tofu is air-fried once to create a golden-brown crust that absorbs the marinade better. The second air-fry caramelizes the yogurt marinade and creates crispy edges. Better flavor, meatier texture!
- Tearing the tofu rather than cutting it into cubes helps it hold the marinade more effectively. It results in tofu pieces that are seasoned all the way through.
- Blending the diced tomatoes before adding them to the pan creates a silky-smooth, restaurant-style sauce without any chunks. Plus, simmering it before adding the coconut milk cooks out the raw tomato and concentrates flavors.
🥫 What You’ll Need
Here are the ingredients you’ll need to make this vegan butter tofu. Remember that you can find the exact measurements in the recipe card located at the bottom of this post.

- Tofu – For the best texture, use firm tofu. Extra-firm tofu would yield a dryer texture, while silken tofu would fall apart in the sauce.
- Yogurt – Use plain, unsweetened vegan yogurt. I like soy yogurt, but coconut or cashew yogurt also works.
- Butter – For that buttery richness. I used Flora plant butter, but any vegan butter works.
- Garlic, ginger, and shallots – The golden trio of aromatics! You can replace the shallots with half of an onion. For the ginger, pick fresh ginger with smooth skin and no wrinkles.
- Spices – Cumin, coriander, garam masala, turmeric, and a pinch of chili powder for some heat.
- Diced tomatoes – Use a 14-ounce (400g) can of diced or crushed tomatoes.
- Coconut milk – Pick full-fat coconut milk over the light kind for a rich and creamy sauce.
📔 Pro Tips
- Tear the tofu, don’t cut it. This one’s important. Tofu pieces with irregular edges hold the marinade better than cubes. They also brown better during baking/air-frying.
- Marinate the tofu while it’s still hot. Since hot tofu is more porous than cold tofu, I recommend adding it to the marinade while it’s still warm. Then let it cool in the marinade and allow it to absorb the flavors for at least 30 minutes, preferably 2 hours.
- Simmer the tomato sauce before adding the coconut milk. To avoid a raw tomato flavor and too much acidity, simmer the tomato sauce for a few minutes before adding the milk.
🥣 How to Make It

- Toss the tofu. Using your hands, tear the tofu into thick, irregular pieces, approximately 1.5 inches (3.8cm) each. Toss them with the oil and salt.

- Air fry. Arrange the tofu pieces into an even layer inside the air fryer basket and air-fry for 20 minutes.

- Prepare the marinade. In the meantime, combine the marinade ingredients in a deep plate.

- Use a spoon to mix everything.

- Add the tofu. Add the hot tofu to the bowl containing the marinade.

- Marinade. Toss to coat the tofu evenly, then marinate it for at least 30 minutes.

- Air fry. Then air-fry the tofu a second time.

- The tofu should have slightly charred edges. Keep an eye on it to ensure it doesn’t burn, though.

- Sauté the aromatics. Melt the butter over medium heat. Then, add the minced shallot, garlic, and ginger. Sauté for 2-3 mins.

- Bloom the spices. Add the spices and cook them for one minute. This helps the spices release more flavor.

- Cook the tomato sauce. Add the blended tomatoes and cook the sauce for 3-4 minutes.

- Pour in the coconut milk. Add the coconut milk, salt, and sugar. Simmer for another 5 minutes.

- Add the tofu. Finally, add the air-fried tofu.

- Toss to coat. Toss to coat it with the sauce and let it simmer for another 5 minutes.
🔥 Oven-Baked Option
No air-fryer? No problem! You can easily bake the tofu instead. First bake: spread the tofu on a baking sheet lined with parchment paper and bake at 375°F (190°C) for 25-27 minutes, flipping halfway, until golden brown. Second bake: Bake at 400°F (200°C) for 15-17 mins, flipping halfway, until the edges are slightly charred.
🍚 Serving Suggestions
- With grains: Basmati rice is our fav, but quinoa, farro, or even couscous would pair well too.
- With naan: Use naan bread to scoop out the sauce and some pieces of the tofu!
❄️ Storing and Reheating
- To store: You can refrigerate the tofu with the sauce for up to 4 days.
- To reheat: Reheat gently over medium heat in a skillet or saucepan for about 5 minutes.

💬 FAQs
No, silken tofu won’t work here. It’s too soft and won’t hold its shape during air frying.
Yes. You can replace the coconut milk with your favorite plant-based cream (soy cream, for example).
Of course! This vegan butter chicken keeps and reheats very well. You won’t even have to thin the sauce, making it great for meal prep.
No. For optimal taste and texture, I advise against freezing it – it would completely change the texture of the tofu.


Save this recipe!
Enter your email below and I’ll send it to your inbox!
Plus, you will receive new recipes every week!
Vegan Butter Chicken (With Tofu)
Ingredients
- 13 ounces (370 g) firm tofu
- 1 tbsp (15 ml) oil
- 1/8 tsp salt
Yogurt Marinade
- 1/4 cup (60 ml) unsweetened vegan yogurt
- 1 tbsp (15 ml) lime juice
- 2 cloves of garlic (finely chopped)
- 1 tsp finely chopped fresh ginger
- 1 tsp garam masala
- 1/2 tsp ground cumin
- 1/4 tsp ground chili powder
- 1/4 tsp salt
Curry
- 3 tbsp (42 g) vegan butter
- 2 shallots (finely minced)
- 2 cloves of garlic (finely chopped)
- 2 tsp finely chopped fresh ginger
- 2 tsp garam masala
- 1/2 tsp ground cumin
- 1/2 tsp ground coriander
- 1/4 tsp ground turmeric
- 1 14-ounce can (1 400-g can) diced tomatoes (blended into a smooth sauce)
- 3/4 cup (180 ml) full-fat coconut milk (or plant-based cream)
- 1 tsp (4 g) sugar
- 3/4 tsp salt
- 1/4 cup fresh cilantro for topping
Instructions
- Toss the tofu. Using your hands, tear the tofu into thick, irregular pieces, approximately 1.5 inches (3.8cm) each. Transfer to a large mixing bowl and add the oil and salt. Toss until evenly coated.
- Air fry. Preheat your air fryer to 365 °F (185°C) and set the time to 20 minutes. Once hot, spread the tofu pieces into an even layer in the air fryer basket and air-fry for 20 minutes, flipping halfway.
- Prepare the marinade. In the meantime, add the yogurt, lime juice, garlic, ginger, spices, and salt to a deep plate. Stir to combine.
- Add the tofu. Once the tofu is golden brown, remove it from the air fryer and let it cool for about 5 minutes. Then, add the warm tofu to the bowl containing the marinade and toss to coat. Let it marinate for at least 30 minutes, preferably 2 hours.
- Air fry again. Preheat your air fryer to 400 °F °F (200°C) and set the time to 12 minutes. Once hot, spread the marinated tofu in an even layer in the air fryer basket. Do not add the leftover marinade, just the tofu pieces. Air fry, flipping halfway through, until the tofu is just slightly charred on the edges. Set aside.
- Sauté the aromatics. Add the butter to a deep non-stick skillet and melt it over medium heat. Once melted, add the minced shallot, garlic, and ginger. Sauté for 2-3 minutes.
- Bloom the spices. Add the spices and stir to combine with the aromatics. Cook for one minute, stirring constantly.
- Cook the tomato sauce. Add the blended tomatoes and cook for 3-4 minutes, stirring regularly.
- Pour in the coconut milk. Then, add the coconut milk, sugar, and salt, and stir to combine. Simmer for another 5 minutes.
- Add the tofu. Finally, add the air-fried tofu and toss to coat. Let it simmer for 3-5 more minutes. Garnish with chopped cilantro and serve with rice and/or naan!
- You can refrigerate the tofu with the sauce for up to 4 days.
Notes

About the Author
Thomas Pagot is the founder, photographer, and recipe developer behind Full of Plants. He created the blog in 2016 as a personal cookbook for vegan recipes. Through years of recipe development, Thomas has successfully grown Full of Plants into a trusted resource for plant-based recipes.






Leave a Comment