Soups & Stews
This beef and veal meatball recipe delivers restaurant-quality herbed dumplings with a rich tomato gravy that clings to every bite. The secret lies in the perfect blend of tender ground beef and veal, bound with breadcrumbs and eggs for a texture that's juicy inside, crisp at the edges.
I've perfected this technique over years of testing, ensuring each meatball stays cohesive while absorbing flavors deeply during cooking.
The foundation starts with a simple yet flavorful mix of ground beef and veal, combined with fresh herbs, garlic, and a touch of Parmesan for depth. These meatballs cook beautifully in a tomato-based gravy that simmers until thick and aromatic, creating a sauce that's as satisfying as the meatballs themselves.
The result? A complete dish that's hearty enough for a weeknight dinner or an impressive meal for guests.
What makes this recipe stand out is its versatility—serve the meatballs over al dente spaghetti, alongside crusty bread to soak up the gravy, or as a standalone dish with a fresh salad.
The herbed tomato gravy adds layers of flavor that elevate the meatballs from ordinary to extraordinary, making every bite worth savoring.
Whether you're baking, pan-frying, or even air-frying these meatballs, the method is foolproof and adaptable to your preferred cooking style. For those looking to modernize the classic, a sous-vide approach ensures even cooking without drying out the meat.
Let's get started on creating meatballs that taste like they've been simmering all day.
Ingredients for beef and veal meatball
Restaurant-quality meatballs start with this precise blend of beef, veal, and fresh herbs—simple yet transformative.
| Ingredient | Amount | Notes |
|---|---|---|
| Ground Beef 🥩 | 1 lb | 80% lean preferred for juiciness |
| Ground Veal 🥩 | ½ lb | Finely ground for even texture |
| Fresh Parsley 🌿 | ¼ cup | Finely chopped, stems included |
| Fresh Basil 🌿 | ¼ cup | Chopped, for aromatic depth |
| Garlic Cloves 🧄 | 4 cloves | Minced, for robust flavor |
| Parmesan Cheese 🧀 | ½ cup | Freshly grated, for umami |
| Large Eggs 🥚 | 2 whole | Room temperature for binding |
| Plain Breadcrumbs 🍞 | ½ cup | Panko for extra crispiness |
| All-Purpose Flour 🌾 | ¼ cup | For light texture |
| Extra-Virgin Olive Oil 🫒 | 2 tbsp | For sautéing garlic |
| Canned San Marzano Tomatoes 🍅 | 28 oz | Crushed, for rich gravy |
| Dry Red Wine 🍷 | ½ cup | Bold Cabernet preferred |
| Vegetable Broth 💧 | 1 cup | Low-sodium for balance |
| Tomato Paste 🍅 | 2 tbsp | For concentrated flavor |
| Dried Oregano 🌿 | 1 tsp | For Mediterranean depth |
The ground beef and veal are the heart of these meatballs. Look for finely ground cuts at your butcher or specialty market—pre-ground often contains fillers. Costco or Whole Foods carry high-quality options, but check the packaging for 80% lean or higher. The herbs? Fresh parsley and basil are non-negotiable—they brighten the meatballs and prevent bitterness. If using dried, reduce to one-third the amount, but honestly, fresh is worth the effort. The Parmesan adds depth without overpowering; grate it yourself for maximum flavor.
No veal? Substitute with an extra 0.5 lb ground beef, but add 1 tbsp extra breadcrumbs to maintain texture. Short on fresh herbs? Dried thyme at half the amount works, though it lacks brightness. The wine can be swapped for extra vegetable broth with 1 tbsp balsamic vinegar—same depth, no alcohol. For the tomatoes, San Marzano is ideal, but any high-quality crushed tomatoes will do. The tomato paste? Rao's or Barilla are my go-tos—they're consistent and affordable. Avoid the squeeze tubes; they lack concentration.
Meatballs keep best in the fridge for 3 days when stored in an airtight container. For longer storage, freeze them on a tray first (to prevent clumping), then transfer to a bag for 3 months. The gravy reheats beautifully—simmer gently to restore thickness. Double the batch and freeze half; these meatballs taste even better the next day as flavors meld. The breadcrumbs can be toasted in a dry pan for 2 minutes before mixing to enhance crispiness—worth the extra minute.
Why You'll Love This Recipe
- No-Fuss Mixing: I swear by the 80/20 beef-veal split—just combine, shape, and bake. No fancy techniques, no stress. The parsley and basil keep it fresh-tasting while the garlic adds depth without overpowering.
- Rich Umami Bomb: That veal? It transforms plain ground beef into something luxurious. The herbs brighten it up, but the garlic and meat combo delivers deep, savory satisfaction every single time.
- Weeknight to Dinner Party: Same recipe, different outcomes. Pan-sear for quick weeknight meals or bake for elegant appetizers. My kids eat them straight from the tray; my in-laws ask for the recipe at holidays.
- Budget Luxury Leftovers: Half the cost of all-beef meatballs, but twice the flavor. Freeze extras for lazy nights or pack them in lunches—still taste amazing reheated. Honestly, my wallet thanks me every time.
Step-by-step instructions for beef and veal meatballs in tomato gravy
Mastering these meatballs means balancing texture and flavor—here's how to achieve perfectly herbed dumplings with a rich, velvety sauce.
Prepare the Meat Mixture with Precision
In a large bowl, combine the 1 lb ground beef and 0.5 lb ground veal. I always use my hands for this—it helps distribute the fat evenly and prevents dense meatballs. Add the 0.25 cup finely chopped fresh parsley, 0.25 cup chopped fresh basil, and 4 minced garlic cloves, mixing gently to incorporate without overworking the meat.
Next, fold in the 0.5 cup freshly grated Parmesan cheese and 2 room-temperature eggs. The eggs should be beaten lightly first to ensure even distribution. Sprinkle over the 0.25 cup all-purpose flour and 0.5 cup plain breadcrumbs, mixing just until combined. Be careful not to overmix—the meat should hold together when pressed but remain tender. If the mixture feels too wet, add 1 tablespoon more breadcrumbs.
Shape and Sear the Meatballs
Using slightly dampened hands, roll the meat mixture into 1.5-inch diameter balls—about 16 meatballs total for 4 servings. Wet your hands to prevent sticking and ensure clean shapes. Place them on a plate and refrigerate for 15 minutes to firm up slightly, which helps them hold their shape during cooking.
Heat a large skillet over medium-high heat and add 2 tablespoons extra-virgin olive oil. Once shimmering, add the meatballs in a single layer, being careful not to crowd the pan. Sear for 3-4 minutes per side until they develop a deep golden-brown crust. Remove and set aside on a paper towel-lined plate to drain excess fat. The meatballs should be firm to the touch but still tender inside.
Build the Tomato Gravy Foundation
In the same skillet, reduce heat to medium and add 2 tablespoons tomato paste, stirring to coat the bottom. Cook for 1 minute until fragrant. Pour in the 0.5 cup dry red wine, scraping up any browned bits from the pan—this adds depth of flavor. Let it simmer for 2-3 minutes until reduced by half.
Add the 28 oz crushed San Marzano tomatoes and 1 cup vegetable broth, along with the 1 teaspoon dried oregano. Stir well and bring to a gentle simmer. The sauce should coat the back of a spoon and have a rich, vibrant color. If it's too thick, add 2 tablespoons water to loosen it slightly. Let it simmer uncovered for 10 minutes to develop the flavors.
Finish the Meatballs and Sauce Together
Return the seared meatballs to the skillet with the sauce. Spoon the sauce over them to coat completely. Cover and simmer on low heat for 15-20 minutes, stirring occasionally, until the meatballs are cooked through and the sauce has thickened. They should reach an internal temperature of 160°F—use an instant-read thermometer to check the thickest meatball.
The sauce should now cling beautifully to the meatballs, with a glossy finish and balanced acidity from the tomatoes. If the sauce is too thin, uncover and simmer for another 5 minutes to reduce it. Taste and adjust seasoning with salt and pepper as needed—the Parmesan and herbs should provide enough umami and brightness, but personal preference matters.
Rest and Serve with Confidence
Transfer the meatballs and sauce to a serving platter. Let them rest for 5 minutes before serving—this allows the juices to redistribute, ensuring each bite is moist and flavorful. The meatballs should be tender yet firm, with a crisp exterior from the searing and a rich, herbed interior.
Serve immediately with crusty bread to soak up the sauce or alongside roasted vegetables for a complete meal. The sauce should coat the meatballs perfectly, with a balance of sweet tomatoes, bright herbs, and the deep umami from the Parmesan. Each bite should deliver a harmonious blend of textures and flavors, proving that even classic dishes can be elevated with the right technique.
Pro Tips For Making Beef And Veal Meatball
- Mix Cold First: I learned this the hard way—veal and beef release fat when warm, and if you don’t mix them cold, your meatballs turn greasy and fall apart. Use your hands (or a stand mixer) to combine the raw ground meats, minced garlic, parsley, and basil before adding any moisture—this ensures even distribution of flavor and texture.
- Salt the Meat Twice: Don’t just season the mix—salt the raw ground beef and veal first, then let it sit for 10 minutes before forming meatballs. The salt breaks down proteins, which locks in moisture and prevents dryness later. (Yes, even if you’re impatient like me.)
- Skip the Overmixing: After adding eggs or breadcrumbs, resist the urge to knead the mixture like dough. Overworking it makes meatballs dense and tough—just gently fold everything together until just combined. Think "loose and airy," not "perfectly uniform."
- Rest Before Cooking: Form the meatballs, then let them sit uncovered in the fridge for 20 minutes. This lets the flavors meld and the surface firm up slightly, so they brown better and hold together when searing. (I know, I know—it’s an extra step, but your future self will thank you.)
Dietary considerations for this beef and veal meatball
Gluten-Free Adaptations
Swap the 0.5 cup plain breadcrumbs for 0.5 cup gluten-free breadcrumbs or almond flour to keep these meatballs safe for gluten-sensitive diets. I recommend Bob's Red Mill gluten-free breadcrumbs for best texture—they absorb moisture similarly to regular breadcrumbs while maintaining a crisp exterior.
For extra binding, add 1 tablespoon ground flaxseed mixed with 3 tablespoons water (let it sit for 5 minutes to gel) to replace the eggs if needed. 🌾
Dairy-Free Options
Replace the 0.5 cup Parmesan cheese with 0.5 cup nutritional yeast for a dairy-free version that still adds umami depth. Nutritional yeast has a cheesy flavor when toasted—sauté it briefly in the skillet before adding the wine for maximum flavor.
For additional binding, use 2 tablespoons dairy-free mayo instead of eggs. The texture remains tender, and the sauce stays rich without cheese.
Lower-Carb Adjustments
Reduce the 0.25 cup all-purpose flour to 2 tablespoons and replace the rest with 0.25 cup crushed pork rinds for a keto-friendly version. Pork rinds add crispiness without carbs while maintaining structure.
For extra flavor, add 1 teaspoon onion powder and ½ teaspoon smoked paprika to the meat mixture. These adjustments keep the meatballs low-carb while preserving their satisfying texture.
Vegetarian Substitutes
For a meat-free version, replace the beef and veal with 1 lb finely chopped mushrooms (like cremini or portobello) and 0.5 lb lentils (cooked and mashed). Add 1 extra egg or 2 tablespoons flaxseed gel for binding.
The texture becomes denser but still holds together beautifully. Boost umami with 1 tablespoon soy sauce or 1 teaspoon miso paste in the sauce. 🌱
Allergen-Friendly Tips
For egg allergies, use 2 tablespoons ground chia seeds mixed with 6 tablespoons water as a binder—let it thicken for 10 minutes before mixing. For nut allergies, ensure your breadcrumbs are nut-free (check labels).
Always verify ingredient sources—cross-contamination can occur in shared facilities. When in doubt, prepare meatballs in a dedicated allergen-free workspace with clean utensils and surfaces.
Nutrition facts
Frequently asked questions
Why mix beef and veal for meatballs?
Veal adds delicate sweetness and tenderness that balances beef's richness, creating a more complex flavor profile. The combination also improves moisture retention—beef's fat content keeps meatballs juicy while veal's leaner texture prevents dryness. For best results, use 80% lean beef and finely ground veal.
Can I make these meatballs ahead of time?
Shape the meatballs and refrigerate them on a tray for 24 hours before cooking. For longer storage, freeze shaped meatballs (uncooked) for 3 months. Thaw overnight in the fridge before cooking—never at room temperature. The flavors deepen when made ahead!
What's the best way to achieve crispy meatballs?
Sear them properly in medium-high heat with enough oil to create a golden crust. Use Panko breadcrumbs for extra crispiness, and don't overcrowd the pan. For air-fryer versions, cook at 375°F for 12 minutes after searing briefly in the oven.
How do I prevent meatballs from falling apart?
Overmixing is the #1 cause! Handle the meat gently and avoid adding too much liquid. The 15-minute chill before cooking helps them firm up. For extra binding, add 1 tablespoon cornstarch to the mixture or use cold eggs instead of room temperature.
What's the secret to rich tomato gravy?
Simmer the sauce uncovered for 10-15 minutes to reduce and concentrate flavors. Deglaze the pan with wine after searing to capture fond (browned bits) for depth. For extra richness, stir in 1 tablespoon butter at the end or add ½ cup heavy cream for a velvety texture.
