Make the Tomato Sauce - In a large pot or Dutch oven, heat olive oil over medium-low heat. Once hot, add the onion and garlic, and sauté until the onions are translucent, about 3 minutes.Stir in the tomato paste and cook for 1 minute. Stir in the crushed tomatoes, salt, and pepper. Simmer covered, with lid slightly ajar to prevent splattering for 30 minutes, stirring occasionally. Season with salt and pepper to taste.
Heat the Oven - Set the oven rack to the lower-middle position. Heat the oven to broil. Line a large baking sheet with foil and lightly grease it with olive oil. Set aside.
Make the Meatball Mixture - In a large bowl, add the ground beef, eggs, breadcrumbs, parmesan cheese, minced onion, salt, black pepper, Italian seasoning, and minced garlic. Use your hands to mix thoroughly until combined.
Shape the Meatballs - Measure out 1/3 cup of the ground beef mixture (3 ounces), about the size of an egg, then roll it into a ball. Evenly space them on the prepared baking sheet. This should yield 14 to 15 meatballs.
Broil the Meatballs - Transfer the meatballs to the lower-middle position in the oven. Cook until the surface is browned, about 10 to 12 minutes. Flip the meatballs and cook for an additional 2 to 3 minutes to lightly brown the other side.
Simmer - Transfer the meatballs to the tomato sauce. Cover the pot with the lid slightly ajar, and simmer on low heat for at least 1 ½ hours, checking and stirring every 20 minutes, or as needed. The meatballs should be fork-tender when sliced.
To Serve - If needed, adjust the consistency of the sauce with water, about 1 tablespoon at a time. Season to taste with salt and pepper. Serve meatballs topped with sauce, sliced basil, and Parmesan cheese if desired.
Notes
Ground Beef Selection: I recommend 80 to 85% lean for the most tender texture. Use 90% for a leaner option, but will have more chew.
Canned Tomatoes: For the sweetest taste, use crushed San Marzano or Cento brand.
Using Italian-style Breadcrumbs: Omit the dried Italian seasoning.
Using Store-Bought Tomato Sauce: Use about 47 ounces (2 jars).
Make it Gluten-Free: Use gluten-free breadcrumbs or almond flour.
Baked Meatballs: Bake at 375ºF (191ºC) for 20 to 25 minutes, flipping halfway through to brown both sides. If fully cooked to 165°F (74°C), they can be served as is.
Make it in the Slow Cooker: Add the cooked sauce and broiled meatballs to a 6-quart slow cooker. Cook on high for 3 hours or 6 hours on low setting.
Storing: Cool and store in an airtight container for up to 5 days.
Freezing: Store uncooked meatballs in a large freezer bag for up to 1 month and defrost before broiling. Freeze cooked meatballs and sauce for up to 1 month. Defrost and reheat on the stovetop until hot.