Put flour in a small dish and set aside. Place ground beef in a large bowl and add chopped onion, garlic and egg. Knead ingredients into meat with your hands, taking care to mix them well throughout the ground beef. Set aside.
In a large pot, add tomato sauce, water, salt, pepper and 2 tablespoons of chili powder. Heat and bring to a low simmer.
With your hands, form medium-size meatballs with the ground beef. Drop into dish of flour and turn meatballs to coat lightly with the flour. Gently drop meatballs, one at a time, into the simmering sauce. Stir in the remaining 2 tablespoons of chili powder.
Continue to simmer sauce and meatballs uncovered for 25 to 30 minutes. Sauce should be bubbling gently while meatballs cook. If preferred, more chili powder may be added to taste.
Meanwhile, cook Spaghetti according to instructions on package. Drain and return to large pot. When spaghetti is cooked, use a pasta spoon to immediately place 1 to 2 cups of hot spaghetti noodles into deep bowls. Drop 3 to 4 meatballs into bowls on top of spaghetti pasta.
Place at least 1/2 cup of shredded cheddar on top of meatballs and pasta in each bowl. Ladle about 3/4 to 1 cup of sauce over the cheese, meatballs and pasta. Cheese will melt from the sauce's heat. If desired, add another big pinch of cheddar to the top of each dish and serve immediately with hot, crusty garlic bread.
To store leftovers, combine pasta, sauce and meatballs together in one container. Store shredded cheese separately. Re-heat the spaghetti, meatballs and sauce in a pot, and sprinkle lots of shredded cheese over each hot serving.