I packed everything I love about French onion soup into juicy meatballs with a rich onion gravy and plenty of melty cheese. This is the kind of dinner that makes a classic feel brand new.

I am obsessed with French Onion Meatballs because they hit that deep, savory soup craving without making dinner feel like a whole event. The meatballs soak up all that oniony richness, and those yellow onions bring the sweet, browned bite I want in every forkful.
Then Gruyere gets involved, and I lose interest in being polite. But seriously, this is the kind of saucy, cheesy skillet situation I keep thinking about after the dishes are done.
Big flavor. No fuss.
Just juicy meatballs with that bold French onion attitude I love so much on repeat lately for dinner again tonight.
Ingredients

- Ground beef gives the meatballs their hearty, classic bite.
Total comfort food.
- Ground pork keeps things juicy, so you’re not eating dry little rocks.
- Yellow onions turn sweet and jammy, basically the whole French onion vibe.
- Olive oil helps those onions soften without getting cranky and burnt.
- Butter adds richness, because French onion anything needs that cozy flavor.
- Brown sugar nudges the onions sweeter.
Not candy sweet, just better.
- Garlic brings a savory kick, because bland meatballs are honestly sad.
- Breadcrumbs help hold everything together and keep the texture tender.
- Egg is the glue, making sure the meatballs don’t fall apart.
- Worcestershire sauce adds salty, tangy depth that tastes like you tried harder.
- Thyme and bay leaf bring that herby, soup-style warmth.
- Beef broth makes the sauce rich, cozy, and totally spoon-worthy.
- White wine adds brightness, but extra broth works if you’re skipping it.
- Gruyere or Swiss gets melty and nutty.
Plus, cheese fixes everything.
- Parsley freshens it up, so the whole dish doesn’t feel too heavy.
Ingredient Quantities
- 1 pound ground beef
- 1/2 pound ground pork
- 3 large yellow onions, thinly sliced
- 2 tablespoons olive oil
- 3 tablespoons unsalted butter
- 1 teaspoon brown sugar
- 2 cloves garlic, minced
- 1/2 cup plain breadcrumbs
- 1 large egg
- 1/4 cup milk
- 1 tablespoon Worcestershire sauce
- 1 teaspoon Dijon mustard
- 1 teaspoon dried thyme or 1 tablespoon fresh thyme leaves
- 1 bay leaf
- 1 tablespoon all purpose flour
- 2 cups beef broth
- 1/4 cup dry white wine or additional beef broth
- 1 cup grated Gruyere or Swiss cheese
- 2 tablespoons chopped fresh parsley
- 1 teaspoon kosher salt, plus more to taste
- 1/2 teaspoon freshly ground black pepper
How to Make this
1. Heat 1 tablespoon olive oil and 2 tablespoons butter in a large skillet over medium heat; add thinly sliced onions, 1 teaspoon brown sugar, 1 teaspoon kosher salt, and 1 bay leaf, and cook, stirring often, until deep golden and caramelized, about 30 to 40 minutes.
2. Add 2 cloves minced garlic and 1 teaspoon dried thyme or 1 tablespoon fresh thyme leaves to the onions in the last 2 minutes of cooking, then remove and discard the bay leaf and transfer half the caramelized onions to a bowl for later.
3. In a large bowl combine 1 pound ground beef, 1/2 pound ground pork, 1/2 cup plain breadcrumbs, 1 large egg, 1/4 cup milk, 1 tablespoon Worcestershire sauce, 1 teaspoon Dijon mustard, 2 tablespoons chopped fresh parsley, 1 teaspoon kosher salt, and 1/2 teaspoon freshly ground black pepper; mix gently until just combined.
4. Fold the reserved caramelized onions into the meat mixture, then shape into 18 to 24 evenly sized meatballs.
5. Heat the remaining 1 tablespoon olive oil in the skillet over medium high heat and brown the meatballs in batches, turning to get color on all sides, about 6 minutes total; transfer browned meatballs to a plate.
6. Reduce heat to medium, add 1 tablespoon unsalted butter to the skillet with any browned bits, sprinkle 1 tablespoon all purpose flour over the pan and cook, stirring, for 1 minute to make a roux.
7. Pour in 1/4 cup dry white wine or additional beef broth to deglaze the pan, scraping up browned bits, then stir in 2 cups beef broth and bring to a simmer.
8. Return the meatballs to the skillet, nestling them into the sauce, cover and simmer gently until cooked through, about 15 to 18 minutes.
9. Sprinkle 1 cup grated Gruyere or Swiss cheese over the meatballs, cover until the cheese melts, or place the skillet under a broiler for 2 to 3 minutes to brown the cheese, watching carefully.
10. Scatter the remaining caramelized onions and additional chopped parsley over the finished meatballs, taste and adjust seasoning with salt and pepper, and serve hot.
Equipment Needed
1. Large heavy skillet with lid
2. Cutting board
3. Chef s knife
4. Wooden spoon or heatproof spatula
5. Large mixing bowl
6. Measuring cups and spoons
7. Plate or baking sheet for resting meatballs
8. Box grater or microplane for cheese
FAQ
French Onion Meatballs Recipe Substitutions and Variations
- Ground pork: substitute ground turkey or chicken for a leaner meat, or use extra ground beef for a single-meat mix.
- Gruyere or Swiss cheese: substitute Emmental, Jarlsberg, or aged cheddar for similar melt and flavor.
- Dry white wine: use additional beef broth, low-sodium chicken broth, or a splash of white wine vinegar diluted with water for acidity.
- Plain breadcrumbs and milk: substitute panko breadcrumbs for extra crunch, or use crushed saltine crackers or oats; swap milk for unsweetened almond milk or water if dairy-free.
Pro Tips
1) Caramelize the onions low and slow, stirring every few minutes and scraping the pan gently. Patience here pays off: deep, sweet onions add real depth, so resist the urge to crank up the heat to speed things along.
2) Chill the mixed meat briefly before shaping. Ten to fifteen minutes in the fridge firms the mixture and helps the meatballs hold their shape when browning and simmering.
3) Brown the meatballs in batches and do not overcrowd the pan. A little space gives better color and flavor. If the pan gets very browned, wipe out a bit of excess fat with a paper towel before making the roux so the sauce does not taste greasy.
4) Finish with acid and texture. A splash of lemon juice or a few drops of sherry vinegar right before serving brightens the rich sauce, and an extra handful of fresh parsley or a sprinkle of finely chopped toasted breadcrumbs adds a pleasant contrast to the cheesy richness.

French Onion Meatballs Recipe
I packed everything I love about French onion soup into juicy meatballs with a rich onion gravy and plenty of melty cheese. This is the kind of dinner that makes a classic feel brand new.
6
servings
554
kcal
Equipment: 1. Large heavy skillet with lid
2. Cutting board
3. Chef s knife
4. Wooden spoon or heatproof spatula
5. Large mixing bowl
6. Measuring cups and spoons
7. Plate or baking sheet for resting meatballs
8. Box grater or microplane for cheese
Ingredients
-
1 pound ground beef
-
1/2 pound ground pork
-
3 large yellow onions, thinly sliced
-
2 tablespoons olive oil
-
3 tablespoons unsalted butter
-
1 teaspoon brown sugar
-
2 cloves garlic, minced
-
1/2 cup plain breadcrumbs
-
1 large egg
-
1/4 cup milk
-
1 tablespoon Worcestershire sauce
-
1 teaspoon Dijon mustard
-
1 teaspoon dried thyme or 1 tablespoon fresh thyme leaves
-
1 bay leaf
-
1 tablespoon all purpose flour
-
2 cups beef broth
-
1/4 cup dry white wine or additional beef broth
-
1 cup grated Gruyere or Swiss cheese
-
2 tablespoons chopped fresh parsley
-
1 teaspoon kosher salt, plus more to taste
-
1/2 teaspoon freshly ground black pepper
Directions
- Heat 1 tablespoon olive oil and 2 tablespoons butter in a large skillet over medium heat; add thinly sliced onions, 1 teaspoon brown sugar, 1 teaspoon kosher salt, and 1 bay leaf, and cook, stirring often, until deep golden and caramelized, about 30 to 40 minutes.
- Add 2 cloves minced garlic and 1 teaspoon dried thyme or 1 tablespoon fresh thyme leaves to the onions in the last 2 minutes of cooking, then remove and discard the bay leaf and transfer half the caramelized onions to a bowl for later.
- In a large bowl combine 1 pound ground beef, 1/2 pound ground pork, 1/2 cup plain breadcrumbs, 1 large egg, 1/4 cup milk, 1 tablespoon Worcestershire sauce, 1 teaspoon Dijon mustard, 2 tablespoons chopped fresh parsley, 1 teaspoon kosher salt, and 1/2 teaspoon freshly ground black pepper; mix gently until just combined.
- Fold the reserved caramelized onions into the meat mixture, then shape into 18 to 24 evenly sized meatballs.
- Heat the remaining 1 tablespoon olive oil in the skillet over medium high heat and brown the meatballs in batches, turning to get color on all sides, about 6 minutes total; transfer browned meatballs to a plate.
- Reduce heat to medium, add 1 tablespoon unsalted butter to the skillet with any browned bits, sprinkle 1 tablespoon all purpose flour over the pan and cook, stirring, for 1 minute to make a roux.
- Pour in 1/4 cup dry white wine or additional beef broth to deglaze the pan, scraping up browned bits, then stir in 2 cups beef broth and bring to a simmer.
- Return the meatballs to the skillet, nestling them into the sauce, cover and simmer gently until cooked through, about 15 to 18 minutes.
- Sprinkle 1 cup grated Gruyere or Swiss cheese over the meatballs, cover until the cheese melts, or place the skillet under a broiler for 2 to 3 minutes to brown the cheese, watching carefully.
- Scatter the remaining caramelized onions and additional chopped parsley over the finished meatballs, taste and adjust seasoning with salt and pepper, and serve hot.
Notes
- Below you’ll find my best estimate of this recipe’s nutrition facts. Treat the numbers as a guide rather than a rule—great food should nourish both body and spirit. Figures are approximate, and the website owner assumes no liability for any inaccuracies in this recipe.
Nutrition Facts
- Serving Size: 335g
- Total number of serves: 6
- Calories: 554kcal
- Fat: 43.8g
- Saturated Fat: 17.9g
- Trans Fat: 0.5g
- Polyunsaturated: 3.3g
- Monounsaturated: 16.7g
- Cholesterol: 196mg
- Sodium: 700mg
- Potassium: 920mg
- Carbohydrates: 16.5g
- Fiber: 1.5g
- Sugar: 1.7g
- Protein: 36.7g
- Vitamin A: 600IU
- Vitamin C: 8mg
- Calcium: 175mg
- Iron: 2mg













