Appetizers & Snacks

French Onion Skillet Meatballs

at a glance
Cook Time 1 hour 40 minutes
Servings 5 servings
4.7 — Votes 3 votes

Every item on this page was chosen by The Fed & Fit team. The site may earn a commission on some products (read more here).

Homemade Paleo skillet meatballs get a delicious makeover with flavorful caramelized onions, a dash of balsamic vinegar, and (optional) sprinkling of mozzarella cheese. The whole family will RAVE over these healthy skillet meatballs!

french onion skillet meatballs in a cast iron pan

BOY HOWDY, these meatballs are good. The idea for these meatballs idea came to me while I was menu planning for my Mom’s birthday dinner. My Mom is an INCREDIBLE cook. She prefers home-cooked food over eating out every day of the week. Though she’s an accomplished business owner in her own right with an exceedingly full-time job (like all business owners), she still finds time to cook breakfast and dinner every single day for herself and my Dad. Every year for my Mom’s birthday, she always has one request: can you please come make me dinner in my house? She wants to be home, with a home-cooked meal, but she’d like to experience the other side of the kitchen …the side where you watch someone whip up delicious eats while you sit and sip on a glass of wine.

Of course I jump at the offer. I’m convinced food IS my love language; plus, it’s not everyday this kitchen master allows me full control of her domain.

For this dinner, I dreamt up all the foods that are especially “cooked with love.” I landed on a homemade pie (chocolate cream pie is her favorite – a recipe I’ll share soon) and something involving caramelized onions. The amount of time that goes into both recipes absolutely qualifies them for a “cooked with love” status.

french onion skillet meatballs in a cast iron pan

Caramelized onions are a hallmark of French onion soup, but I knew I wanted to make her something slightly more substantial. Something like …meatballs! After about an hour on the stove melting 1.5 pounds of fresh onions into golden, sweet, caramelized goodness, I rolled them in with grass-fed ground meat. The meatballs are then placed back in the skillet I used to cook the onions, drizzled with a little balsamic vinegar, and then baked for a 35 minutes. They come out bubbly and smelling absolutely incredible.

IF you’re up for it, you can also sprinkle a little mozzarella cheese on top and pop them back in the oven for a short 5 additional minutes to help melt and crisp that cheese into the signature French onion soup finish. Garnish with a little parsley, serve over zucchini noodles, gluten-free rice noodles (what we did on her birthday), or over mashed potatoes.

DANG they were good.

french onion skillet meatballs in a cast iron pan

I hope you enjoy this recipe as much as we did!

xo,

Cassy Joy

French Onion Skillet Meatballs

By: Cassy
4.7 — Votes 3 votes
Cook Time: 1 hr 40 mins
Servings: 5 servings

Ingredients  

  • 4 tablespoons butter ghee, or avocado oil, divided
  • 1.5 pounds white onions about 3 large count, finely chopped
  • 1 teaspoon fine sea salt
  • 2.5 pounds ground beef
  • 1/4 teaspoon ground black pepper
  • 2 tablespoons balsamic vinegar
  • 1/2 cup grated mozzarella cheese optional (omit for Whole 30)
  • 2 tablespoons fresh parsley finely chopped

Instructions

  • Melt 2 tablespoons of the butter in a large skillet (cast-iron is a good choice) over medium heat. Add the onions, season with the sea salt, stir, and then cook over medium heat (stirring continuously) for 30 minutes to 1 hour, or until the onions have reduced significantly in size and have developed a deep caramel color.
  • Mix the onions into the ground meat with the black pepper until evenly incorporated.
  • Melt the additional 2 tablespoons of butter in the skillet and preheat the oven to 400 F. Roll the meat into 2 tablespoon-sized meatballs and place them in the skillet. Repeat for the entire batch and then drizzle the tops of the meatballs with the balsamic vinegar.
  • Bake at 400 F for 35 minutes, or until the top of the meatballs are starting to brown.
  • Remove from the oven, add the optional cheese and return to the oven for an additional 3 to 5 minutes, or until the top of the cheese is melted and starting to brown.
  • Enjoy warm over zucchini noodles, gluten-free rice noodles, mashed cauliflower, or mashed potatoes.
Meet the Author
Cassy Headshot

Cassy Joy Garcia

HOWDY! I’m Cassy Joy and I am just so happy you’re here. I’m the founder, Editor-in-Chief, and Nutrition Consultant here at Fed and Fit. What started as a food blog back in 2011 has evolved now into so much more.
Get to know Cassy

Show us!

Did You Make This Recipe?

Share a photo and tag us! We can’t wait to see what you make!

Reader Interactions

Comments

    Leave a Reply

    Your email address will not be published.

    Recipe Rating




  1. Sam says

    Sam —  11/10/2016 At 09:42

    Thanks for sharing, Cassy! I’m cooking dinner for my mom’s birthday this weekend – just may have to include these 🙂

  2. Brit says

    Brit —  11/16/2016 At 08:54

    These were amazing!

  3. Sharon says

    Sharon —  11/25/2016 At 19:56

    made this last week – my husband usually dislikes my cooking but in this case, A-maz-ING. we both loved it!

  4. Amy says

    Amy —  12/08/2016 At 12:53

    These look so yummy!! I’m sure these would be great to freeze also! Would you freeze after step 3 or just at the very end of the recipe?

    Thinking about serving mine on top of cauli-mash!

  5. Shireen Shipman says

    Shireen Shipman —  07/18/2017 At 06:45

    Hi Cassy,

    These came out amazing! I added a little bit of brandy to the onions at the end and cooked it down and some herbs de provence. I love the way this tastes!

    Thanks for all that you do!

    Shireen

  6. Casey says

    Casey —  07/03/2018 At 23:21

    I made these tonight, and they were absolutely delicious! This recipe is a keeper 🙂

  7. Chef Erin says

    Chef Erin —  02/28/2020 At 13:51

    You have to continuously stir the ONIONS for 30-60 MINUTES? That sounds like a deal breaker. I am not giving onions more self-care than I give myself.

    • Amanda McVay says

      Amanda McVay —  05/30/2020 At 10:13

      I thought the same thing!!

    • Brandi Schilhab says

      Brandi Schilhab —  05/31/2020 At 04:35

      They do take a while, but they are SO good!!

  8. Latia says

    Latia —  10/02/2020 At 10:35

    4 stars
    Very tasty and a nice alternative to the typical Italian meatballs. Versatile. I used three pounds of beef since I had 80/20 and I lose a lot when I cook it but it’s full of flavor. Just my husband and I are eating so I froze about 3/4 of the batch in two freezer bags. Thanks for all the great recipes!

    • Brandi Schilhab says

      Brandi Schilhab —  10/05/2020 At 07:43

      So glad you enjoyed these, Latia! Thank you for sharing this with us!

  9. Jenn says

    Jenn —  10/23/2020 At 13:29

    5 stars
    OMG these were amazing! My fiance also couldn’t stop complimenting them. Caramelizing the onions for 30-60 mins was 100% worth it. I kept the stove on medium low and checked/stirred them every 5 mins or so in the beginning. When I started seeing them get brown then I slightly raised the temp and watched over it more carefully until they were perfect. Served over pasta sprinkled with some parm. Thank you!

    • Brandi Schilhab says

      Brandi Schilhab —  10/26/2020 At 07:57

      Awesome! So so glad you all enjoyed these, Jenn!!

  10. Jennie Perno says

    Jennie Perno —  01/25/2022 At 17:33

    5 stars
    These meatballs are sooo good!!! Such a satisfying flavor and meal! We served it with garlic pasta and roasted cauliflower. Absolutely delicious!!

    • Melissa Guevara says

      Melissa Guevara —  01/26/2022 At 22:21

      Hi Jennie! I am so glad that you enjoyed! Sounds like a delicious meal. Thank you for taking the time to share with us! ~Melissa

[class^="wpforms-"]
[class^="wpforms-"]
[class^="wpforms-"]
[class^="wpforms-"]
[class^="wpforms-"]
[class^="wpforms-"]
[class^="wpforms-"]
[class^="wpforms-"]
[class^="wpforms-"]
[class^="wpforms-"]
[class^="wpforms-"]
[class^="wpforms-"]