Dice tomatoes and return them to the can with their juice.
Heat 2 tablespoons olive oil in a saucepan over medium-high heat. Add onion and garlic to the hot oil and cook, stirring frequently, for 2 minutes. Stir in diced tomatoes and their juice, tomato sauce, oregano, 1/2 teaspoon salt, and 1/4 teaspoon pepper until well blended. Bring sauce to a simmer and reduce heat to low. Let simmer while preparing meatballs.
Combine beef substitute with bread crumbs, parsley, remaining 3/4 teaspoon salt, remaining 1/4 teaspoon pepper, garlic powder, and onion powder in a bowl; mix until ingredients are well combined. Roll the mixture into twelve 1 1/2-inch balls.
Bring a large pot of lightly salted water to a boil. Cook spaghetti in the boiling water, stirring occasionally, until tender yet firm to the bite, about 12 minutes.
Meanwhile, heat remaining 2 tablespoons olive oil in a deep skillet or Dutch oven over medium-high heat. Add meatballs to the pan and saute, turning occasionally, until all sides are browned and a bit crisp, about 10 minutes total. Reduce heat to low.
Pour simmering tomato sauce over the meatballs and mix. Simmer sauce with meatballs for an additional 10 minutes. Serve meatballs and sauce over spaghetti.