Easy Homemade Spaghetti and Meatballs with Tomato Sauce
This homemade spaghetti and meatballs recipe is based on my YouTube video, with a few adjustments since publication to make the proportions easier to follow at home. The idea stays the same: make something more generous and better tasting than a canned version, but keep it practical, with a budget-friendly meatball mixture, a simple tomato sauce, and pasta that actually has enough sauce to coat it.
{VIDEO}

Spaghetti and meatballs is a hearty pasta dish made with seasoned beef meatballs simmered in tomato sauce and served over spaghetti. What makes this version different is that it keeps the “chef versus industrial” spirit from the video, but turns it into a reliable home recipe with clear quantities. I make it when I want a filling family meal that works in winter, on a weeknight, or whenever there is ground beef in the fridge and a can of tomatoes in the pantry.
The important thing here is not to overwork the beef. The mistake to avoid is mixing the meat until it becomes sticky and compact, because that gives you hard meatballs instead of tender ones. What I look for is a mixture that holds together when rolled, browns nicely in the pan, and then finishes gently in the sauce.
What Makes This Recipe Different
In the video, I compare two homemade versions: one more economical, with simple ground beef and rehydrated onion and garlic, and one a little more generous, with fresh aromatics and better pasta. For the blog version, I prefer to bring those ideas together into one clean recipe that people can reproduce without guessing.
This is not a creamy pasta like my creamy garlic chicken pasta, and it is not a quick burnt-tomato style dish like spaghetti all’assassina. This one is more classic: tomato sauce, browned meatballs, spaghetti, basil, and a little parmesan if you want the richer version.
I make it this way because the meatballs need two things: good seasoning and gentle cooking. Searing gives color and flavour, but the sauce is what finishes them without drying them out. If you bake them too long and then simmer them again, they can become firm. A short sear followed by a slow simmer gives a better result.
This is also a good protein-rich comfort meal without needing expensive ingredients. Ground beef, pasta, tomatoes, onion, garlic, and herbs do most of the work.
Ingredients You Need
For the meatballs, use ground beef with a little fat. Extra-lean beef can work, but it is less forgiving. A small amount of breadcrumbs and milk helps keep the inside tender, especially if the meat is leaner than expected.
You need ground beef, breadcrumbs, milk, one egg, onion, garlic, salt, pepper, and olive oil. In the video, I show that even dehydrated onion and garlic can help a budget version. That still works. Rehydrate them first in a little warm water, then drain off any extra liquid before mixing them into the meat.
For the sauce, keep it simple: onion, garlic, crushed tomatoes or passata, thyme, bay leaf, basil, salt, pepper, and a little water if the sauce gets too thick. The sauce should bubble gently, not boil aggressively. When it is ready, it should smell sweet and tomato-rich, not raw or sharp.
For the pasta, regular dry spaghetti is the easiest choice. Fresh pasta also works, and if you want to go further with the homemade side, my fresh pasta without a machine or fresh pasta with tomato sauce are good places to start.

Step-by-Step Instructions
Make the Meatball Mixture
Add the breadcrumbs and milk to a large bowl and let them sit for a few minutes. They should become soft and damp, not soupy. This small step makes the meatballs less dry, especially once they simmer in the sauce.
Add the ground beef, egg, finely chopped onion, garlic, salt, and pepper. Mix with your hands just until everything is combined. Stop as soon as the mixture looks even. If you keep squeezing and folding, the texture becomes too tight.

Roll the mixture into medium meatballs. For one pound of beef, I like about 14 to 16 meatballs. They cook faster, they are easier to portion, and they do not need a long oven finish. Place them on a plate or tray while the sauce starts.
Start the Tomato Sauce
Heat olive oil in a wide pot or deep skillet. Add the onion and cook until it softens and turns slightly translucent. You are not trying to caramelize it. You just want the raw onion smell to disappear.
Add the garlic and cook briefly. When the garlic smells good, add the crushed tomatoes, thyme, bay leaf, and a splash of water. Season lightly with salt and pepper. Let the sauce simmer while you sear the meatballs.

At this point, the sauce should be loose enough to move around the meatballs later. If it is already very thick, add a little more water. It will reduce as it cooks.
Sear the Meatballs
Heat olive oil in a skillet over medium-high heat. Add the meatballs without crowding the pan. If the pan is too full, they steam instead of browning.
Sear them on several sides until they have a nice brown crust. They do not need to be fully cooked in the pan. The goal is color and flavour. You know the pan is hot enough when the meatballs sizzle as soon as they touch the oil.

Transfer the browned meatballs into the tomato sauce. Lower the heat and let them simmer gently for 15 to 20 minutes, or until they are cooked through. The sauce should move slowly around them, not splash everywhere.
Cook the Spaghetti
Bring a large pot of salted water to a boil. Cook the spaghetti according to the package directions until al dente. Before draining, save a little pasta water.
Add the drained spaghetti to part of the sauce and toss until coated. If the sauce feels too thick, loosen it with a splash of pasta water. This makes the sauce cling better instead of sitting separately on the plate.

Serve
Twirl the spaghetti into bowls or plates, then add the meatballs and more sauce on top. Finish with basil and parmesan if using.
For the richer version, add the parmesan at the end. For the budget version, skip the cheese and rely on the tomato sauce, garlic, onion, and herbs. Both versions work. The key is enough sauce and meatballs that are not overcooked.

Tips for Better Meatballs
Do not make the meatballs too large unless you plan to cook them longer. Smaller meatballs are more reliable and easier to simmer evenly.
Use a wide pan for searing. If the meatballs are packed together, they release moisture and turn grey instead of browning. Give them space.
Do not boil the sauce hard after adding the meatballs. A strong boil can break them apart and tighten the meat. A gentle simmer is enough.
Taste the sauce before serving. Canned tomatoes vary a lot. Sometimes they need salt, sometimes a pinch of sugar, sometimes just five more minutes to mellow out.
If you like beef pasta recipes with a different style, try beef stroganoff with mushrooms for a creamy version, beef chow mein for a noodle dish, or Hungarian beef goulash with potatoes when you want something more stew-like.
Substitutions

You can replace ground beef with a mix of beef and pork if you want a softer, richer meatball. Turkey or chicken can work too, but they are leaner, so the breadcrumbs and milk become more important.
For the budget version from the video, use dried onion and dried garlic. Rehydrate them in warm water for about 10 minutes, then drain off any extra liquid before adding them to the meat. This gives more flavour than adding the dried aromatics straight into the beef.
If you do not have breadcrumbs, use crushed crackers or a small piece of bread soaked in milk. The texture should be moist but not wet.
Passata, crushed tomatoes, or canned tomato sauce all work. If using a very smooth tomato sauce, simmer it a little longer so it thickens and tastes less raw.
Spaghetti is classic, but rigatoni, penne, or fusilli also work. For another tomato pasta direction, my garlic butter pasta with parmesan is faster and simpler, while fresh pasta with tomato sauce leans more homemade and traditional.
Serve this with something fresh if the plate feels heavy. A crisp romaine and endive salad balances the tomato sauce well. If you want a bigger comfort meal, gratin Savoyard with potatoes and cheese turns it into a very generous dinner.

FAQ
Can I make the meatballs without egg?
Yes. The egg helps bind the mixture, but you can skip it if needed. Keep the breadcrumbs and milk, and handle the meatballs gently when searing.
Why add breadcrumbs and milk?
They make the meatballs more tender. In the video, the mixture is very simple, but for a written recipe, I prefer adding this small panade because it makes the result more reliable for different types of ground beef.
Can I bake the meatballs instead?
Yes. Bake them at 400°F for about 12 to 15 minutes, then finish them in the sauce. Do not bake them for too long before simmering, or they can dry out.
How do I know the meatballs are cooked?
They should be firm but not hard, and the center should no longer be raw. For the safest result, use a thermometer and cook ground beef meatballs to 160°F internally.
Can I make the sauce ahead?
Yes. The tomato sauce can be made a day ahead and kept in the fridge. Reheat it gently, then add the browned meatballs and simmer until cooked through.
Can I freeze this recipe?
The meatballs and sauce freeze well together. Let them cool completely, then freeze in containers. Cook fresh pasta when serving for the best texture.
What can I serve with spaghetti and meatballs?
A green salad, garlic bread, roasted vegetables, or a potato side all work. If you want more beef ideas for another day, try easy beef curry with brown rice, ground beef enchiladas, or stovetop stuffed bread with ground beef.
Suggested Posts
If you want another pasta night, try spaghetti all’assassina for a spicy tomato pasta with a very different cooking method.
For a creamy beef dinner, make beef stroganoff with mushrooms.
For a fast beef recipe without pasta, try garlic butter steak bites.
For a homemade pasta project, use fresh pasta without a machine.
For a simple side, serve the meatballs with a romaine and endive green salad.

Easy Homemade Spaghetti and Meatballs with Tomato Sauce
Ingredients
- 1 lb ground beef
- 1/3 cup plain breadcrumbs
- 1/4 cup milk
- 1 large egg
- 1 small yellow onion finely chopped
- 1 garlic clove finely chopped
- 1 tsp kosher salt
- 1/2 tsp black pepper
- 2 tbsp olive oil divided
- 1 medium yellow onion chopped
- 2 garlic cloves chopped
- 1 can crushed tomatoes 28 oz
- 1/2 cup water plus more as needed
- 1 sprig thyme
- 1 bay leaf
- 1/4 cup fresh basil leaves
- 12 oz spaghetti
- Salt for the pasta water
- Black pepper to taste
- Parmesan for serving, optional
Instructions
- Mix the breadcrumbs and milk in a large bowl and let sit for 5 minutes.
- Add the ground beef, egg, small onion, 1 garlic clove, salt, and pepper. Mix gently until just combined.
- Roll into 14 to 16 medium meatballs.
- Heat 1 tbsp olive oil in a pot. Add the medium onion and cook until softened.
- Add 2 garlic cloves and cook briefly, then add the crushed tomatoes, water, thyme, bay leaf, salt, and pepper.
- Simmer the sauce gently while you brown the meatballs.
- Heat the remaining olive oil in a skillet and sear the meatballs on several sides until browned.
- Transfer the meatballs to the sauce and simmer gently for 15 to 20 minutes, until cooked through.
- Cook the spaghetti in salted boiling water according to the package directions. Save a little pasta water before draining.
- Toss the spaghetti with some of the sauce, adding pasta water if needed to loosen it.
- Serve the spaghetti with the meatballs, more sauce, basil, and parmesan if using.





