Heat olive oil in a large pot. Add onions and sauté until they become soft and transparent. Stir in mushrooms and cook for about 2-3 minutes. Add soy sauce and garlic and continue to cook until mushrooms become soft.
Add canned tomatoes. Use a wooden spoon to gently break the whole tomatoes apart. They will continue to break down as they simmer.
Stir in basil, oregano, brown sugar, salt and pepper.
Simmer covered for 1-2 hours, stirring every 5-10 minutes to prevent sticking. If you notice the sauce is getting too thick you can add water or beef broth a little at a time to loosen it up again.
While sauce simmers, prepare meatballs. Preheat oven to 400°F. Mix all meatball ingredients together. Avoid over mixing.
Using a cookie scoop or your hands, roll meat into 1" balls and place on a large parchment lined baking sheet about 1/2 inch apart.
Bake for 15 minutes. Remove from oven and place meatballs on a paper towel to absorb excess grease.
Add the prepared meatballs to the sauce. Simmer, uncovered 30 minutes before serving. Stir every 5-10 minutes to prevent sticking or burning, adding water or broth as needed if the sauce becomes too thick.
Prepare spaghetti noodles according to package directions.
Serve meatballs and sauce over cooked spaghetti.