French Onion Meatballs

Okay, so you know that moment when you’re slurping French onion soup and thinking, “This is amazing, but I wish I could eat it with a fork”? Well, problem solved. These French Onion Meatballs are basically everything you love about that classic soup but in convenient, bite-sized form that won’t require you to wrestle with stringy cheese hanging off your spoon.

We’re talking tender, juicy meatballs swimming in a rich, caramelized onion gravy that’s been simmered to perfection, then topped with a blanket of melted Gruyère cheese that gets all bubbly and golden. It’s comfort food that thinks it’s fancy, but honestly? It’s just really, really good. Serve it over mashed potatoes, egg noodles, or just grab a spoon and go to town. No judgment here.

Why You’ll Love This Recipe

  • All the French onion flavor — without the messy soup situation
  • One-pan wonder — less dishes, more eating
  • Crowd-pleaser — even picky eaters can’t resist meatballs
  • Fancy enough for company — but easy enough for weeknight dinner
  • Freezer-friendly — make a double batch and thank yourself later
  • That cheese pull — Instagram is gonna love this

The Good Stuff You’ll Need

For the Meatballs:

  • 1.5 lbs ground beef (80/20 is perfect)
  • 1/2 lb ground pork (trust me, it makes them extra tender)
  • 1 cup panko breadcrumbs
  • 1/2 cup whole milk
  • 1 large egg
  • 1/4 cup grated Parmesan cheese
  • 2 cloves garlic, minced
  • 1 tsp salt
  • 1/2 tsp black pepper
  • 1/4 tsp dried thyme
  • 2 tbsp olive oil (for browning)

For the French Onion Magic:

  • 4 large yellow onions, thinly sliced (yeah, it’s a lot — they cook down)
  • 3 tbsp butter
  • 1 tbsp olive oil
  • 1 tsp sugar (helps with caramelization)
  • 1/2 tsp salt
  • 3 cloves garlic, minced
  • 1/4 cup dry white wine (or more beef broth)
  • 3 cups beef broth (get the good stuff)
  • 2 tbsp fresh thyme leaves (or 1 tbsp dried)
  • 2 bay leaves
  • 1 tbsp Worcestershire sauce

For the Cheesy Finish:

  • 2 cups shredded Gruyère cheese (splurge on this — it’s worth it)
  • 1/2 cup shredded mozzarella (for extra meltiness)
  • Fresh thyme for garnish
  • Chopped fresh parsley

Let’s Do This

Step 1: Prep Those Meatballs

In a small bowl, mix the panko with milk and let it sit for 5 minutes until it’s all mushy (that’s the good stuff).

In a large bowl, combine ground beef, ground pork, the soaked breadcrumbs, egg, Parmesan, minced garlic, salt, pepper, and thyme.

Mix gently with your hands — don’t overwork it or you’ll get tough meatballs, and nobody wants that.

Roll into balls about 1.5 inches in diameter. You should get about 20-24 meatballs.

Step 2: Brown Those Beauties

Heat olive oil in a large, oven-safe skillet or Dutch oven over medium-high heat.

Brown the meatballs in batches, turning them to get color on all sides (about 6-8 minutes total).

They don’t need to be fully cooked — just golden and gorgeous.

Remove meatballs and set aside on a plate.

Step 3: The Onion Transformation

In the same pan (don’t clean it — those brown bits are flavor gold), add butter and olive oil.

Add the sliced onions, sugar, and salt. Stir to coat.

Cook over medium heat, stirring occasionally, for about 25-30 minutes until the onions are deep golden brown and caramelized.

This is where the magic happens, so don’t rush it. Good things take time.

Step 4: Build the Sauce

Add minced garlic to the caramelized onions and cook for another minute.

Pour in the wine (if using) and scrape up any brown bits from the bottom of the pan.

Add beef broth, thyme, bay leaves, and Worcestershire sauce.

Bring to a simmer and let it bubble away for 10 minutes to develop the flavors.

Step 5: Bring It All Together

Nestle the browned meatballs back into the sauce.

Cover and simmer for 15-20 minutes until the meatballs are cooked through (internal temp of 165°F).

Remove the bay leaves because nobody wants to bite into one of those.

Step 6: The Cheese Finale

Preheat your broiler.

Sprinkle the Gruyère and mozzarella over the top of the meatballs and sauce.

Pop under the broiler for 2-3 minutes until the cheese is bubbly and golden.

Garnish with fresh thyme and parsley.

Serving Suggestions

Serve over creamy mashed potatoes, buttered egg noodles, or crusty bread for soaking up that incredible sauce.

A simple green salad with vinaigrette cuts through all that rich, cheesy goodness.

Pair with a glass of red wine — maybe a Côtes du Rhône or Burgundy to keep the French theme going.

Switch It Up

Turkey Time: Use ground turkey instead of beef and pork — just add an extra egg to keep them moist.

Veggie Version: Try mushroom and lentil “meatballs” with vegetable broth.

Cheese Swap: Use Swiss or even aged cheddar if you can’t find Gruyère.

Herb Garden: Add fresh rosemary or sage to the meatball mixture.

Slow Cooker Style: Brown everything, then transfer to a slow cooker for 4 hours on low.

Make-Ahead Tips

Form the meatballs and store them covered in the fridge for up to 24 hours before cooking.

The whole dish can be made a day ahead — just reheat gently and add fresh cheese before serving.

Freeze the cooked meatballs in sauce for up to 3 months. Thaw overnight and reheat with a splash of broth.

The caramelized onions can be made up to 3 days ahead and stored in the fridge.

Questions People Actually Ask

Q: Can I use all beef instead of the beef/pork mix? A: Sure, but the pork adds tenderness and flavor. If going all beef, maybe add a little extra milk to the breadcrumb mixture.

Q: How do I know when the onions are caramelized enough? A: They should be deep golden brown and jammy, not just softened. It takes patience, but it’s worth it.

Q: Can I make this without wine? A: Absolutely! Just use more beef broth or add a splash of balsamic vinegar for depth.

Q: What if I don’t have an oven-safe pan? A: Transfer everything to a baking dish before adding the cheese and broiling.

Q: Can I use frozen meatballs? A: You can, but homemade is so much better. If using frozen, thaw them first and brown them to get some color.

Print
clock clock iconcutlery cutlery iconflag flag iconfolder folder iconinstagram instagram iconpinterest pinterest iconfacebook facebook iconprint print iconsquares squares iconheart heart iconheart solid heart solid icon

French Onion Meatballs


  • Author: Tyla
  • Total Time: 1 hour 30 minutes
  • Yield: 6 servings 1x

Description

Okay, so you know that moment when you’re slurping French onion soup and thinking, “This is amazing, but I wish I could eat it with a fork”? Well, problem solved. These French Onion Meatballs are basically everything you love about that classic soup but in convenient, bite-sized form that won’t require you to wrestle with stringy cheese hanging off your spoon.

We’re talking tender, juicy meatballs swimming in a rich, caramelized onion gravy that’s been simmered to perfection, then topped with a blanket of melted Gruyère cheese that gets all bubbly and golden. It’s comfort food that thinks it’s fancy, but honestly? It’s just really, really good. Serve it over mashed potatoes, egg noodles, or just grab a spoon and go to town. No judgment here.


Ingredients

Scale

For the Meatballs:

  • 1.5 lbs ground beef (80/20 is perfect)
  • 1/2 lb ground pork (trust me, it makes them extra tender)
  • 1 cup panko breadcrumbs
  • 1/2 cup whole milk
  • 1 large egg
  • 1/4 cup grated Parmesan cheese
  • 2 cloves garlic, minced
  • 1 tsp salt
  • 1/2 tsp black pepper
  • 1/4 tsp dried thyme
  • 2 tbsp olive oil (for browning)

For the French Onion Magic:

  • 4 large yellow onions, thinly sliced (yeah, it’s a lot — they cook down)
  • 3 tbsp butter
  • 1 tbsp olive oil
  • 1 tsp sugar (helps with caramelization)
  • 1/2 tsp salt
  • 3 cloves garlic, minced
  • 1/4 cup dry white wine (or more beef broth)
  • 3 cups beef broth (get the good stuff)
  • 2 tbsp fresh thyme leaves (or 1 tbsp dried)
  • 2 bay leaves
  • 1 tbsp Worcestershire sauce

For the Cheesy Finish:

  • 2 cups shredded Gruyère cheese (splurge on this — it’s worth it)
  • 1/2 cup shredded mozzarella (for extra meltiness)
  • Fresh thyme for garnish
  • Chopped fresh parsley

Instructions

Step 1: Prep Those Meatballs

In a small bowl, mix the panko with milk and let it sit for 5 minutes until it’s all mushy (that’s the good stuff).

In a large bowl, combine ground beef, ground pork, the soaked breadcrumbs, egg, Parmesan, minced garlic, salt, pepper, and thyme.

Mix gently with your hands — don’t overwork it or you’ll get tough meatballs, and nobody wants that.

Roll into balls about 1.5 inches in diameter. You should get about 20-24 meatballs.

Step 2: Brown Those Beauties

Heat olive oil in a large, oven-safe skillet or Dutch oven over medium-high heat.

Brown the meatballs in batches, turning them to get color on all sides (about 6-8 minutes total).

They don’t need to be fully cooked — just golden and gorgeous.

Remove meatballs and set aside on a plate.

Step 3: The Onion Transformation

In the same pan (don’t clean it — those brown bits are flavor gold), add butter and olive oil.

Add the sliced onions, sugar, and salt. Stir to coat.

Cook over medium heat, stirring occasionally, for about 25-30 minutes until the onions are deep golden brown and caramelized.

This is where the magic happens, so don’t rush it. Good things take time.

Step 4: Build the Sauce

Add minced garlic to the caramelized onions and cook for another minute.

Pour in the wine (if using) and scrape up any brown bits from the bottom of the pan.

Add beef broth, thyme, bay leaves, and Worcestershire sauce.

Bring to a simmer and let it bubble away for 10 minutes to develop the flavors.

Step 5: Bring It All Together

Nestle the browned meatballs back into the sauce.

Cover and simmer for 15-20 minutes until the meatballs are cooked through (internal temp of 165°F).

Remove the bay leaves because nobody wants to bite into one of those.

Step 6: The Cheese Finale

Preheat your broiler.

Sprinkle the Gruyère and mozzarella over the top of the meatballs and sauce.

Pop under the broiler for 2-3 minutes until the cheese is bubbly and golden.

Garnish with fresh thyme and parsley.

Notes

Serve over creamy mashed potatoes, buttered egg noodles, or crusty bread for soaking up that incredible sauce.

A simple green salad with vinaigrette cuts through all that rich, cheesy goodness.

Pair with a glass of red wine — maybe a Côtes du Rhône or Burgundy to keep the French theme going.

  • Prep Time: 30 minutes
  • Cook Time: 1 hour

Nutrition

  • Calories: ~485 kcal
  • Fat: ~28g
  • Carbohydrates: ~22g
  • Protein: ~32g

Leave a Comment

Recipe rating