Italian Spaghetti with Meatballs
Italian Spaghetti with Meatballs is the kind of comforting, no-fuss dinner recipe that becomes an instant family favorite. This version is simple: classic meatballs made with lean ground beef, fragrant herbs, a touch of lemon zest, and a straightforward tomato sauce that simmers until bright and silky. Serve it with a chunky slice of ciabatta and a generous shower of Parmesan for a weeknight supper that feels like a celebration.
Why you’ll love this recipe
- Quick to assemble — the meatball mixture comes together in one bowl.
- Balanced flavors — fresh basil and thyme play nicely with lemon zest and Parmesan.
- Everyday ingredients — pantry staples and a can of tomatoes make this approachable.
- Textural contrast — al dente spaghetti paired with tender, well-browned meatballs.
Ingredients
- 12 oz spaghetti
- 1 lb. ground lean beef
- 1 slice ciabatta bread
- Milk (enough to soak the bread)
- ½ cup Parmesan cheese
- 1 small minced white onion
- 1 tablespoon fresh thyme leaves
- 1 egg
- 2 tablespoon finely chopped basil
- 1 ½ teaspoon lemon zest
- 2 teaspoons salt
- 1 teaspoon black pepper
- 2 tablespoon Extra virgin Olive Oil (for browning meatballs)
- 2 cans peeled tomatoes, chopped, seeds and juice discarded
- a bunch of basil leaves
- 1 bay leaf
- 1 garlic clove, gently crushed
- 2 tbsp extra virgin olive oil (for sauce)
Prep notes
Before you start, tear the ciabatta into smaller pieces and place it in a bowl. Add just enough milk to soak the bread; set aside for a few minutes so the bread becomes soft. Grate the Parmesan, finely chop the basil and mince the white onion.
Meatball mixture — build flavor from the beginning

In a large bowl, combine the soaked ciabatta (squeezed lightly to remove excess milk), 1 lb. ground lean beef, ½ cup Parmesan cheese, 1 small minced white onion, 1 tablespoon fresh thyme leaves, 1 egg, 2 tablespoons finely chopped basil, 1 ½ teaspoon lemon zest, 2 teaspoons salt, and 1 teaspoon black pepper. Use your hands or a fork to mix gently until just combined — overworking the meat will make the meatballs dense. Aim for a uniform mixture without compacting it too tightly.
Shape and brown the meatballs

Divide the mixture into even portions and roll into meatballs about the size you prefer (classic golf-ball size works well). Heat 2 tablespoons extra virgin olive oil in a wide skillet over medium heat. When the oil is hot, add the meatballs in a single layer without crowding the pan. Brown them on all sides, turning carefully so they develop a deep, caramelized exterior. They do not need to be cooked through at this stage — browning builds flavor and helps them hold together in the sauce. Transfer browned meatballs to a plate and set aside.
Simple tomato sauce
In the same skillet, add 2 tablespoons extra virgin olive oil. Over medium-low heat, add the gently crushed garlic clove and sauté just until fragrant, about 30–45 seconds — avoid browning the garlic. Add the chopped peeled tomatoes (with seeds and juice discarded) to the skillet. Stir in the bunch of basil leaves (reserve a few for garnish) and the bay leaf. Bring the mixture to a gentle simmer and let it reduce and concentrate for 8–10 minutes, stirring occasionally. Taste and adjust seasoning if needed.
Finish the meatballs in the sauce
Gently nestle the browned meatballs into the tomato sauce. Spoon the sauce over each meatball so they stay moist. Cover the skillet and simmer over low heat for 12–15 minutes, until the meatballs are cooked through and the flavors have melded. Remove the bay leaf before serving.
Cook the spaghetti
While the meatballs finish in the sauce, bring a large pot of salted water to a rolling boil. Add 12 oz spaghetti and cook according to package instructions until al dente. Reserve a cup of the pasta cooking water, then drain the pasta.
Bring it together
Toss the drained spaghetti with a ladle or two of the tomato sauce to coat the noodles evenly; add a splash of reserved pasta water if the sauce feels too thick. Plate a bed of sauced spaghetti, top with hot meatballs, and spoon extra sauce over everything. Scatter torn basil leaves and a little extra grated Parmesan over the top. Serve immediately with the ciabatta on the side.
Step-by-step instructions (clear, rewritten directions)
- Tear 1 slice ciabatta into pieces and soak it in enough milk to soften. Let sit while you prepare other ingredients.
- Grate ½ cup Parmesan cheese, mince 1 small white onion, chop 2 tablespoon finely chopped basil, and zest 1 ½ teaspoon lemon zest.
- In a large bowl, combine the soaked and lightly squeezed ciabatta, 1 lb. ground lean beef, grated Parmesan, minced onion, 1 tablespoon fresh thyme leaves, 1 egg, chopped basil, lemon zest, 2 teaspoons salt, and 1 teaspoon black pepper. Mix gently until just combined.
- Shape the mixture into evenly sized meatballs (golf-ball size recommended).
- Heat 2 tablespoon Extra virgin Olive Oil in a wide skillet over medium heat. Add meatballs in a single layer and brown on all sides, turning carefully so they color evenly. Transfer browned meatballs to a plate; they do not need to be fully cooked through.
- In the same skillet, add 2 tbsp extra virgin olive oil for the sauce. Add 1 garlic clove, gently crushed, and sauté briefly until fragrant (30–45 seconds).
- Add 2 cans peeled tomatoes, chopped (seeds and juice discarded), a bunch of basil leaves, and 1 bay leaf to the skillet. Stir, bring to a gentle simmer, and cook 8–10 minutes to reduce and meld flavors.
- Return the browned meatballs to the sauce. Spoon sauce over them, cover the skillet, and simmer over low heat for 12–15 minutes until meatballs are cooked through. Remove and discard the bay leaf.
- Meanwhile, bring a large pot of salted water to a boil. Cook 12 oz spaghetti according to package directions until al dente. Reserve 1 cup of the pasta cooking water, then drain the spaghetti.
- Toss the drained spaghetti with a couple ladles of the tomato sauce to coat, adding reserved pasta water as needed to loosen the sauce.
- Plate the sauced spaghetti, top with meatballs, and spoon extra sauce over everything. Garnish with torn basil leaves and additional grated Parmesan if desired. Serve with ciabatta on the side.
Serving suggestions
A simple green salad with lemon vinaigrette brightens the plate. If you like, sprinkle a little extra Parmesan and drizzle a touch of extra virgin olive oil over the finished dish. Leftovers keep well in the refrigerator for a day or two; reheat gently on the stovetop to keep meatballs tender.
Troubleshooting & tips
- If meatballs fall apart while browning, they were mixed too vigorously — handle the mixture gently next time.
- For a smoother sauce, use an immersion blender for a few pulses after the tomatoes have simmered.
- Reserve pasta water to adjust sauce consistency — the starch helps the sauce cling to the noodles.
- To brown more meatballs at once, use two skillets or brown in batches so the pan isn’t overcrowded.
Final thoughts
This Italian Spaghetti with Meatballs recipe honors classic flavors while staying uncomplicated enough for a busy evening. The lemon zest and fresh herbs lift the meatballs, and the simple tomato sauce allows those flavors to shine. Keep the ingredients simple, take your time browning the meatballs, and you’ll have a satisfying, timeless plate of pasta everyone will reach for again and again.

Italian Spaghetti with Meatballs
Ingredients
- 12 oz spaghetti
- 1 lb ground lean beef
- 1 slice ciabatta bread
- milk enough to soak the bread
- 1/2 cup Parmesan cheese
- 1 small white onion, minced
- 1 tbsp fresh thyme leaves
- 1 egg
- 2 tbsp finely chopped basil
- 1 1/2 tsp lemon zest
- 2 tsp salt
- 1 tsp black pepper
- 2 tbsp extra virgin olive oil for searing meatballs
- 2 cans peeled tomatoes, chopped seeds and juice discarded
- a bunch basil leaves
- 1 leaf bay leaf
- 1 clove garlic, gently crushed
- 2 tbsp extra virgin olive oil for tomato sauce
Instructions
- Cut the ciabatta slice into small cubes, place in a bowl, cover with milk and let soak until softened, then squeeze out most of the milk.
- In a large bowl combine the ground beef, minced onion, Parmesan, minced fresh thyme, egg, chopped basil, lemon zest, salt, and black pepper.
- Add the squeezed ciabatta to the meat mixture and mix until just combined; avoid overworking.
- Form the mixture into meatballs of about 2 oz each; roll in your hand, then gently press to slightly flatten.
- Heat 2 tbsp extra virgin olive oil in a very large frying pan over high heat until shimmering, add meatballs without crowding, and sear without moving for about 3 minutes to form a crust.
- Turn the meatballs and sear the other side about 3 minutes, using juices to baste; when both sides are seared, remove from heat—the meatballs will finish cooking in the sauce.
- Meanwhile, heat 2 tbsp extra virgin olive oil in a saucepan with the crushed garlic; gently cook the garlic until golden, then discard the garlic.
- Add the chopped peeled tomatoes, a couple of basil leaves, and the bay leaf to the pan; season with salt, pepper and a pinch of sugar, reduce heat and simmer 10–15 minutes.
- About halfway through the sauce cooking time, add the seared meatballs to the sauce and continue to simmer until meatballs are cooked through and flavors meld.
- While the sauce finishes, cook the spaghetti in a large pot of lightly salted boiling water for about 8 minutes or until al dente according to package instructions.
- Drain the pasta and add it to the pan with the meatball sauce; toss to combine and heat through.
- Serve immediately topped with grated fresh Parmesan and extra basil leaves if desired.
Equipment
- Large frying pan
- Saucepan
- Large Pot
- Mixing Bowl
- Measuring Spoons
- Wooden spoon or spatula
- Grater
Notes
- Soak and squeeze the bread well so meatballs are not soggy.
- Sear meatballs undisturbed to develop a good crust.
- Discard the garlic after flavoring the oil to avoid bitter bits.
- Simmer sauce gently to let flavors meld.

