French onion soup has always been one of my favorite comfort foods, and that’s what inspired this French onion meatballs skillet recipe. This recipe takes everything I love about the classic soup and turns it into a hearty main dish with plenty of protein and a delicious, rich flavor.
I like to serve it over top of egg noodles or creamy mashed potatoes or with cheesy, crusty sourdough bread for soaking up the sauce. This one-pot weeknight dinner is comforting and flavorful, and a recipe I rely on when life gets busy. It also makes a great holiday appetizer.

Recipe Highlights
Quick and easy: Ready in just 40 minutes, these French onion meatballs are a comforting, easy dinner that doesn’t take long to make.
Affordable: This ground beef recipe doesn’t require any special ingredients. Just everyday pantry and fridge ingredients that are often already on hand.
Real-food ingredients: No onion soup mix required, just simple nourishing ingredients.
High-protein: Each serving provides 28 grams of protein, making it easy to reach my daily protein goals.
Allergen-friendly: This recipe is naturally nut-free and is easy to make gluten-free and dairy-free, too, with simple swaps. I often prepare it when hosting guests for a hearty meal that satisfies a variety of dietary needs.
Primary Ingredients
Below are a few notes about the main ingredients in my French onion meatballs recipe. Please be sure to scroll down to the recipe card below for the complete ingredient details.
- Ground beef – I prefer to use 90% or 93% lean ground beef, which helps prevent the meatballs from becoming soggy in the gravy sauce.
- Sliced onions – I use yellow onions in both the meatballs and the gravy to recreate the sweet, caramelized taste that characterizes French onion soup.
- Bread crumbs – I use regular bread crumbs or panko breadcrumbs and both work great. I’ve also tested this recipe with gluten-free bread crumbs, which may create a slightly coarser texture, but the difference is not noticeable, especially when the meatballs are combined with the cheese and sauce.
- Milk – I use this in the meatballs to create a tender, juicy texture and prevent the meatballs from shrinking. I find that whole milk creates the best moist meatballs, but any regular milk or unsweetened non-dairy milk will work.
- Cheese – To recreate all the flavors of classic French onion soup, I use Gruyère cheese. However, when I can’t find it at my local grocery store, I substitute Swiss cheese or mozzarella cheese for a similar taste.
How to Make French Onion Meatballs
Ready in just 40 minutes, this recipe is a lot easier and faster to make than French onion soup. I gather a bowl and a skillet, and everything comes together with just a few simple steps:
- Form the meatballs. Combine all the meatball ingredients in a large bowl, mix until well combined, and portion the mixture into golf ball-sized meatballs.
- Sear the meatballs. Heat a skillet over medium heat, mist it with cooking spray, and sear the meatballs on all sides until golden brown. Then, transfer the meatballs to a plate.
- Create the French onion sauce. Caramelize onions in oil, then add the minced cloves garlic, and cook until fragrant. Next, whisk the cornstarch into the broth, then pour the mixture into the skillet, deglazing the pan by scraping up the browned bits from the bottom.
- Thicken the sauce. Bring the liquid to a boil, stirring constantly. Then, reduce the heat, and continue to cook until the sauce thickens.
- Combine and serve. Return the meatballs to the skillet, spooning the sauce over the top. Then, remove the skillet from the heat, add the cheese, and let it sit a few minutes until the cheese is melted.
For serving size and the complete directions and ingredient amounts, scroll down to the recipe card below. All of our recipes include the nutrition information, listing calories (kcals), protein, carbohydrates/carb, total fat, saturated fat, fiber, sugar, sodium, and cholesterol per serving.
Broil For A Meltier Topping
For a crispy topping and iconic browned cheese, place the oven-proof skillet under the broiler for just 1-2 minutes until the cheese is melting and bubbling. Be careful to keep a close eye on it so the cheese doesn’t start to burn.
My Favorite Ways to Serve
These French Onion Meatballs are versatile and can be enjoyed in several delicious ways. For instance, I often pair them with crusty sourdough bread to soak up every drop of the onion gravy. I top slices of crusty bread with cheese and broil it just before serving. Then, I sprinkle the skillet with fresh thyme or fresh parsley and a sprinkle of Parmesan cheese for even more salty, savory flavor.
If I don’t have bread on hand, I enjoy the meatballs and gravy over mashed potatoes or buttered egg noodles. This dish pairs well with a side of roasted green beans or sautéed broccolini for extra color, nutrients, and fiber.
Make Ahead Option
To make this dinner faster on weeknights, I’ll sometimes prep many of the ingredients up to the point of cooking. Here’s how:
- Mix and shape the meatballs. Store in a covered container in the fridge for up to 3 days.
- Slice the onions and mince the garlic. Store in separate containers in the fridge for up to 3 days.
- When it’s time to cook, measure the broth and cornstarch, shred the cheese and slice the bread (lightly toasting or broiling it with a sprinkle of cheese on top).
How to Store and Reheat
Once cool, I transfer leftover meatballs and gravy to an airtight container. They stay fresh in the fridge for up to 4 days and freeze well for up to 3 months.
To serve from frozen, thaw the frozen meatballs in the refrigerator overnight. Then, I warm them in a skillet on the stovetop over medium-high heat, adding a little more beef stock or broth as needed to loosen the gravy.
Want to save this recipe?
Enter your email below & we’ll send it straight to your inbox. Plus you’ll get great new recipes from us every week!
French Onion Meatballs Recipe
Inspired by French onion soup, this French onion meatballs skillet features tender meatballs in a rich gravy with plenty of melty cheese on top. This easy weeknight dinner idea combines and cooks in a single skillet. Serve it over cooked noodles, mashed potatoes, or with crusty bread for soaking up the flavorful gravy.
Ingredients
For the Meatballs:
- 1 lb lean ground beef
- ¼ cup finely diced yellow onion (~¼ of an onion)
- 2 garlic cloves, finely minced
- 3 tablespoons bread crumbs
- 2 tablespoons milk
- 1 tablespoon Worcestershire sauce
- 1 tablespoon Dijon mustard
- ¼ teaspoon fine salt
- ¼ teaspoon black pepper
- Cooking spray
- ¾ cup (3 ounces) shredded Gruyere, Swiss, or mozzarella cheese
- Chopped fresh parsley for garnish
For the Gravy:
- 2 teaspoons olive oil
- ½ medium yellow onion, thinly sliced
- 2 garlic cloves, finely minced
- 2 cups low-sodium beef broth
- 1 ½ tablespoons cornstarch
Optional for serving: Sliced crusty sourdough bread (topped with cheese and lightly broiled), cooked noodles, or mashed potatoes
Instructions
- In a medium bowl, combine the ground beef, ¼ cup diced onion, 2 minced cloves garlic, the bread crumbs, milk, Worcestershire sauce, mustard, salt, and pepper. Mix well to combine and, using wet hands, form the mixture into 16 evenly sized balls (each about the size of a golf ball).
- Place a large oven-safe skillet over medium heat. Generously mist the skillet with cooking spray. When the skillet is hot, add the meatballs, being careful not to crowd them.
- Cook the meatballs until lightly browned on all sides, about 2 minutes per side, then remove them to a clean plate.
- To the same skillet over medium-high heat, add the 2 teaspoons of olive oil and swirl to coat.
- Add the onions and cook until tender, stirring occasionally, 7-8 minutes.
- Add the 2 cloves garlic and cook for 30 seconds or until fragrant, stirring constantly.
- In a glass measuring cup, whisk the cornstarch into the broth until it is dissolved, then pour the broth mixture into the skillet. Use a spatula or spoon to scrape up any browned bits on the bottom of the pan.
- Increase the heat to high and bring the gravy to a boil, stirring constantly. Once boiling, reduce the heat to medium and continue to cook until thickened, stirring constantly, 4-5 minutes.
- Return the meatballs to the onion gravy in the skillet and spoon the gravy over them.
- Remove the skillet from the heat and top with the shredded cheese. Allow it to rest, uncovered, for 5 minutes to allow the cheese to melt and the gravy to thicken more. (Note: If you’d like the cheese to brown more, place the skillet until the oven broiler on High for 1-2 minutes, watching carefully so the cheese doesn’t burn.)
- If desired, garnish meatballs with chopped fresh parsley. Store leftovers in an airtight container in the fridge for up to 4 days or freeze for up to 3 months.
Last Step! Please leave a review and rating letting us know how you liked this recipe! This helps our business thrive so we can continue providing free recipes and high-quality content for you.
Notes
For gluten free, use gluten-free breadcrumbs or crushed gluten-free crackers. Serve the meatballs over mashed potatoes or gluten-free noodles.
For dairy free, use non-dairy unsweetened milk in place of the 2 tablespoons dairy milk. Also, omit the shredded cheese.
Nutrition Information
- Serving Size: ¼ of the meatballs, gravy, and cheese
- Calories: 321
- Fat: 13 g
- (Sat Fat: 6 g)
- Sodium: 622 mg
- Carbohydrate: 14 g
- (Fiber: 1 g
- Sugar: 5 g)
- Protein: 34 g
- Cholesterol: 92 mg
Dietary
The photos in this post were taken by Megan McKeehan.
For ultimate success, we highly recommend reading the tips in the full blog post above. All photos and content are copyright protected. Please do not use our photos without prior written permission. If you wish to republish a recipe, please rewrite the recipe in your own unique words. Link back to the source recipe here on The Real Food Dietitians. Thank you!