Put the cashews and almonds into a small saucepan on medium-high heat. Cover with water, bring to a boil, then decrease the heat to a medium and simmer for 20 minutes. Drain and set aside.
Finely crush the cardamom seeds, cumin seeds, and coriander seeds in a mortar and pestle and set aside.
Put 4 tsp of oil into a large saute pan over medium-high heat. Add the onion and cook for 10 minutes, or until softened and lightly browned. Transfer to a blender along with the nuts and 3/4 cup plus 2 tbsp of water and blend until completely smooth.
Put the remaining oil into the same pan over medium-high heat. Add the garlic, ginger, and green chile and cook for 1 minute, then add the spices and cook for 1 minute more. Add the grated tomatoes and cook for 4 minutes, stirring occasionally, until thickened. Add the pureed onion-nut mixture, 2 cups water, 1.5 tsp salt and black pepper to taste. Bring to a simmer, then decrease the heat to medium and cook for 25 minutes, until reduced by a third. Add the baked vegan tofu meatballs to the sauce, cover, and heat for 5 minutes, until the meatballs are warmed through.
Sprinkle with cilantro and sliced red onion. Serve with basmati rice or naan bread.