Place the cashews and water into a blender. Blend until the mixture becomes a smooth, milky liquid.
Melt the butter in a medium skillet over medium heat. Add the onion. Cook the onion for about ten minutes, stirring frequently, until it softens and just begins to brown.
Stir in the garlic, ginger, serrano pepper (if using), garam masala, cumin, coriander, paprika, turmeric, fenugreek, and black pepper. Cook the mixture for about one minute, stirring constantly, until it becomes very fragrant.
Stir in the crushed tomatoes. Bring the mixture to a simmer, lower the heat and let it cook for about 10 minutes. You can add a splash of water if it dries up too much or begins sputtering excessively. Just be careful not to thin the sauce too much.
Stir in the cashew mixture, sugar, and salt. Bring the sauce back up to a simmer.
Stir in the baked tofu, then remove the skillet from heat.
Stir in the cilantro and season the curry with additional salt to taste, if desired. Adjust any other seasonings to your liking.
Serve over rice, optionally with a sprinkle of fresh cilantro on top.