Everything you love about French onion soup, but a little heartier, these French Onion Meatballs are easy to make and incredibly comforting. They’re fancy enough for holiday entertaining but simple enough to whip up for a weeknight dinner.
I recently shared my French onion soup recipe and while I was making it I found myself craving something a bit heartier, but with the same great flavor.
These French onion meatballs combine the usual meatball suspects of ground beef, breadcrumbs, garlic, and eggs, but with the addition of fresh thyme.
They’re lightly fried, then simmered in a hearty caramelized onion sauce and finished with melted Swiss.
These French onion soup meatballs make the perfect appetizer for holidays and dinner parties but are so good you’ll want them during the week too.
Table of Contents
All ingredients for this recipe are shown in the pic below and special notes are made in this bulleted list to assist you.
- Ground beef. Use ground chuck for maximum flavor, but you can use leaner ground beef if you’d like.
- Milk. Adds moisture to the meatballs.
- Breadcrumbs. I used Italian seasoned breadcrumbs, but you can also use plain breadcrumbs.
- Eggs. To bind the meatballs.
- Thyme. For both the meatballs and for the sauce.
- Onions. Sliced root to stem for caramelizing.
- Red wine. Use a dry red wine such as Cabernet or Pinot Noir.
- Brandy. While this is optional, it adds great flavor to the sauce. You can also use sherry.
- Chicken stock. Use homemade chicken stock whenever possible, or opt for chicken base.
- Swiss cheese. For melting on the French onion soup meatballs and baguette. You can use Gruyere as well.
See the recipe card for complete information on ingredients and quantities.
How to make it
Each number corresponds to the numbered written steps below.
- Thinly slice 2 large yellow onions from root to stem and set aside. Mince 4 cloves of garlic (for the sauce) and finely mince 5 cloves of garlic to form a paste (for the meatballs). Shred 2 cups of Swiss cheese. In a large bowl, combine 1/4 cup of milk and 3/4 cup of Italian-seasoned breadcrumbs and allow to sit for 5 minutes. (Photo #1)
- After 5 minutes, to the breadcrumb mixture add 1 1/2 pounds of ground chuck, the garlic paste, 1 teaspoon of fresh thyme leaves, 1 teaspoon of salt, 1 teaspoon of black pepper, and 2 large eggs and mix gently until combined. (Photo #2)
- Using your hands, roll approximately 1 1/2 inch meatballs and set them aside on a parchment paper lined sheet. You should wind up with 15-18 meatballs. (Photo #3)
- Heat a large pan to medium heat and add the onions along with 2 tablespoons of olive oil, 3 ounces of water, and 1/2 teaspoon of salt. Cover with a lid and allow to cook for 15 minutes. Remove the lid and continue to cook, stirring occasionally. Keep an eye on the onions and adjust the heat as needed to avoid burning adding a splash of water as needed. (Photo #4)
- Meanwhile, heat a large oven-safe frying pan to medium heat and add a thin layer of olive oil to coat the pan. Once the oil is hot, add the meatballs. (Photo #5)
- Fry the meatballs until browned, about 3 minutes per side, then remove with a slotted spoon and set aside on a dish. (Photo #6)
- Preheat the oven to 450f and set the rack to the middle level. Remove the oil used to fry the meatballs and add the onions from the other pan along with 2 tablespoons of butter. (Photo #7)
- Continue to cook the onions over medium heat until they are deeply caramelized paying close attention to the heat, stirring frequently, and adding water as needed to prevent burning. Once the onions are done, add the minced garlic and cook for 1 minute, then add 1 1/2 tablespoons of flour to the pan and cook for 1-2 minutes, stirring frequently, until the flour is no longer white. (Photo #8)
- Add 1/2 cup of dry red wine and bring the sauce to a boil while scraping the bottom of the pan to dislodge any brown bits. Then add 2 cups of low-sodium (or homemade) chicken stock and a teaspoon of fresh thyme leaves and bring to a simmer for 5 minutes. (Photo #9)
- Taste test the French onion sauce and adjust salt and pepper to taste. Add 1 tablespoon of brandy or sherry, if using, and stir to combine. Add the meatballs to the pan and top with 3/4 of the Swiss cheese and bake for 7-10 minutes or until bubbly. (Photo #10)
- Slice a baguette and place 12 slices on a baking sheet and top with the remaining Swiss cheese. Place under the broiler for a few minutes until the cheese melts and the bread is lightly toasted. (Photo #11)
- If you’d like a browner top on the meatballs, place them under the broiler for 2-3 minutes and watch carefully to prevent burning. Garnish with fresh thyme and serve with the toasted baguette slices. Serve and enjoy! (Photo #12)
- Be patient. Caramelizing onions is easy but takes time. The onions do require frequent stirring and should be monitored. If there are any signs of burning, simply add a splash of water to bring down the temperature of the pan and onions.
- Use homemade stock. To immediately elevate the flavor in any recipe calling for stock, opt for homemade. My recipe for homemade chicken stock has zero salt added which gives you complete control of sodium levels in your food.
- Alcohol. For my French onion meatball recipe I’m using a dry red wine to complement the beef. This is different from my French onion soup recipe where I use vermouth and homemade beef stock. I wanted to change the meatball recipe up a bit since the richness of the red wine just works here. While I do add a tablespoon of sherry or brandy at the end for additional flavor, this is optional.
More meatball recipes
Here are a few more of my favorite meatball recipes. I hope you love them!
If you’ve enjoyed this French Onion Meatballs Recipe or any recipe on this site, give it a 5-star rating and tell us about it in the comments below.
French Onion Meatballs
For the caramelized onions
- 2 tablespoons olive oil
- 2 large yellow onions sliced thinly from root to stem
- 3 ounces water
- 1/2 teaspoon salt
- 2 tablespoons butter
For the meatballs
- 1 1/2 pounds ground chuck
- 1/4 cup milk
- 3/4 cup Italian seasoned breadcrumbs
- 5 cloves garlic paste
- 1 teaspoon fresh thyme leaves
- 1 teaspoon salt
- 1 teaspoon black pepper
- 2 large eggs
- olive oil for frying
Finishing the dish
- 4 cloves garlic minced
- 1 1/2 tablespoons flour
- 1/2 cup dry red wine
- 2 cups low-sodium chicken stock
- 1 teaspoon thyme leaves
- 1 tablespoon brandy or sherry optional
- 2 cups Swiss cheese sliced or shredded, divided
- salt and pepper to taste
- 12 slices baguette toasted
Make the meatballs and the onions
- In a large bowl, mix the breadcrumbs and milk together and let sit for 5 minutes.
- Add the remaining ingredients to the bowl and mix gently until combined.
- With your hands, roll ~1 1/2" meatballs ( makes roughly 15-18) and set them on a parchment paper lined baking sheet.
- Heat a large pan or pot to medium heat and add the olive oil, onions, water, and salt, and mix to coat. Cover with a lid and cook for 15 minutes.
- Remove the lid and continue to cook, stirring occasionally. Keep an eye on the onions and adjust the heat to avoid burning. Add a splash of water every so often to avoid burning if necessary.
- Heat a large oven-safe frying pan to medium heat with olive oil poured to a thin layer coating the whole pan. Once the oil is hot fry the meatballs until browned (about 3 minutes per side) then remove with a slotted spoon to a dish and set aside.
Finishing the French onion meatballs
- Preheat oven to 450f and set the rack on the middle level.
- Pour off the oil used to fry the meatballs and add all of the onions to the pan from the other pot along with the butter. Continue to cook the onions over ~medium heat until they are deeply caramelized, paying attention to the heat and stirring frequently or adding water to avoid burning.
- Once the onions are done, add the garlic and cook for 1 minute. Add the flour to the pan and cook for 1-2 minutes, stirring frequently, until all of the flour is no longer white.
- Add the wine and bring to a boil while scraping the bottom of the pan with a wooden spoon to dislodge all of the brown bits.
- Once boiling add the chicken stock and thyme and bring to a simmer for 5 minutes.
- Taste test and adjust salt and pepper to taste. Add the brandy or sherry (optional) and stir to combine.
- Add all of the meatballs to the pan and top with 3/4 of the Swiss cheese, then place in the oven and bake for 7-10 minutes or until bubbly.
- Top the baguette slices with the remaining cheese and place under the broiler for a minute to toast and melt the cheese but watch closely to prevent burning.
- For a browner top, broil the meatballs for 2-3 minutes but watch carefully. Garnish with thyme leaves and serve with toasted baguette slices topped with the remaining Swiss cheese. Enjoy!
- Homemade chicken stock is recommended so that the flavor is very intense. If using storebought, opt for chicken base (Better than Bouillon brand).
- Leftovers can be saved for up to 3 days in the fridge and can be reheated in the oven.
Nutrition information is automatically calculated, so should only be used as an approximation.