First, slice and press one block of tofu very well. Then, make your tofu marinade by combining all of the marinade ingredients (except for the tofu) into a large glass pyrex dish. Then slice your pressed tofu any way you like, and place it into the marinade, flipping once to coat. Cover and place into the refrigerator for a few hours to overnight.
When you are ready to make the dish, heat the oil and vegan butter in a medium-sized dutch oven over medium heat. Add in the onions and saute for about 4 minutes. Then add in the tomato paste and garam masala and stir to combine. Saute for another 4 minutes. Throw in the cinnamon stick.
Now add in the canned tomatoes, vinegar and salt and stir. Allow to simmer for about 30 minutes over medium-low heat.
After 30 minutes has passed, remove your tofu from the refrigerator. Preheat another skillet over medium heat. Remove the tofu from the mariande, tapping off any excess sauce and place onto the skillet. Reserve the leftover marinade. Saute on each side until golden brown, about 7 minutes each side.
Return to your sauce and transfer any leftover marinade into your sauce using a rubber spatula. Stir to combine, remove from the heat, and stir in the fresh cilantro.
To serve, place the tofu onto a plate or bowl and spoon a generous amount of the sauce over the top. Sprinkle with extra fresh cilantro and serve with rice.