Preheat the oven to 375°F (190°C) and line a baking sheet with parchment paper.
Prepare the flax egg: Mix 2 tablespoons ground flaxseed with 6 tablespoons water in a small bowl. Let sit for 5 minutes until it becomes gel-like.
Rehydrate TVP: In a large mixing bowl, combine 1 cup TVP with 2½ cups hot vegetable broth. Stir well and let stand for 10 minutes until fully absorbed.
Heat a large skillet over medium-high heat. Add mushrooms to the dry pan and cook until they release their moisture and begin to brown (about 5-7 minutes). Add a splash of water or oil to the pan, then add onions. Cook for 3-4 minutes until translucent. Add minced garlic and cook for another minute.
In the large bowl with rehydrated TVP, add the mushroom mixture, flax egg, breadcrumbs, nutritional yeast, soy sauce, and all seasonings. Mix thoroughly with your hands until well combined. The mixture should hold together when squeezed.
Form into 20-24 golf ball-sized meatballs (about 1½ inches in diameter). Place meatballs on the prepared baking sheet, leaving space between each. Bake for 25-30 minutes, turning halfway through. They should be golden brown and firm.
While the meatballs are baking, heat olive oil in a large pot over medium heat. Add chopped onion and cook until soft and translucent (5-7 minutes).
Add minced garlic and cook for 1 minute, stirring constantly to prevent burning. Add tomato paste and cook for 2 minutes, stirring frequently to develop the flavor.
Pour in crushed tomatoes and add all seasonings (basil, oregano, sugar if using, salt, and pepper).
Reduce heat to low and simmer for 20-25 minutes, stirring occasionally.
While the sauce is simmering, bring a large pot of salted water to boil. Cook spaghetti according to package instructions until al dente. Reserve 1 cup of pasta water before draining.
Add 1 ladle of pasta water to the sauce and stir to combine. For a smoother sauce, you can blend half or all of the tomato sauce until you reach your desired texture.
Add baked meatballs to the sauce and stir to coat them in the sauce, then remove from the heat.
Portion spaghetti into bowls, top with meatballs and sauce. Garnish with fresh basil leaves and vegan parmesan if desired, and you’re ready to serve!