Skillet Swedish Meatballs with Creamy Gravy

These Easy Skillet Swedish Meatballs are a cozy, family-friendly dinner that’s simple enough for a weeknight and satisfying enough for company. The meatballs are tender and well-seasoned, and the sauce is what makes the dish—an indulgent, creamy gravy brightened with Dijon, a touch of apple cider vinegar, and a warming blend of allspice and nutmeg. This version is naturally gluten-free and can be modified to suit Whole30, paleo, or dairy-free needs by swapping the butter for ghee or a vegan butter alternative and using cassava flour as the thickener.

Easy Skillet Swedish Meatballs

These meatballs hold up well in the refrigerator, making them a great option for meal prep. Reheat gently in the sauce to keep them moist, or freeze for longer storage. For serving, they’re delicious over mashed potatoes, wide egg noodles, or a simple bed of roasted vegetables for a lower-carb plate. Garnish with fresh parsley to add brightness.

Easy Skillet Swedish Meatballs

Looking for more meatball recipes? Try these variations

Meatballs with Basil and Burst Tomatoes • Gluten-Free Chicken Piccata Meatballs • Epic Whole30 Baked Meatballs • Whole30 Chicken Enchilada Meatballs

Easy Skillet Swedish Meatballs

Gluten-Free, Grain-Free — Adaptable to Dairy-Free, Paleo, or Whole30

Total time: 45 mins • Servings: 4

Ingredients

For the Meatballs

  • 1 pound ground beef (90/10)
  • 1/2 pound ground pork
  • 2 teaspoons Dijon mustard
  • 2 tablespoons finely chopped parsley leaves, plus more for garnish
  • 1/4 cup minced yellow onion
  • 1 teaspoon garlic powder
  • 1 teaspoon allspice
  • 1/4 teaspoon nutmeg
  • 1/4 teaspoon cayenne (optional, for a hint of heat)
  • 1 teaspoon kosher salt
  • 1/2 teaspoon freshly ground black pepper
  • 2 tablespoons cassava flour
  • 1 large egg, beaten
  • 2 tablespoons extra virgin olive oil, plus more as needed for frying

For the Gravy

  • 4 tablespoons salted butter (substitute ghee for paleo/Whole30 or vegan butter for dairy-free)
  • 1/4 cup halved and thinly sliced shallot (about 1 medium shallot)
  • 2 cloves garlic, minced
  • 2 tablespoons cassava flour
  • 1 1/2 cups low-sodium beef broth
  • 1/2 cup full-fat unsweetened coconut milk
  • 2 teaspoons Dijon mustard
  • 1 tablespoon coconut aminos
  • 1/2 teaspoon kosher salt, plus more to taste
  • 1/4 teaspoon freshly ground black pepper
  • 1/4 teaspoon allspice
  • 1 tablespoon apple cider vinegar

Instructions

Prepare the Meatballs

  1. In a large bowl, gently combine the ground beef, ground pork, Dijon mustard, parsley, minced onion, garlic powder, allspice, nutmeg, cayenne (if using), salt, pepper, cassava flour, and the beaten egg. Mix until just combined—avoid overworking the meat to keep the meatballs tender.
  2. Using a tablespoon or a cookie scoop, portion the mixture and roll into roughly 1-inch meatballs.
  3. Heat a large, deep nonstick or heavy skillet over medium heat and add the olive oil. Working in batches so the pan isn’t crowded, sear the meatballs in a single layer until browned on all sides, about 2 minutes per side (roughly 6 minutes per batch). Transfer browned meatballs to a paper towel–lined plate and continue with remaining batches, adding more oil if needed.
  4. When all meatballs are browned, discard excess pan fat but reserve about 2 tablespoons for flavor. Wipe out any overly charred bits with a paper towel if desired.

Make the Gravy and Finish the Dish

  1. Return the skillet to medium heat and add the butter and reserved fat. Once the butter has melted, add the sliced shallot and garlic. Sauté until softened, about 2 minutes.
  2. Sprinkle the cassava flour over the shallots and cook, stirring, to toast the flour for about 1 minute. This helps remove any raw starch taste and builds the base for the gravy.
  3. While whisking constantly, slowly pour in the beef broth until the mixture is smooth. Add the coconut milk and continue whisking to combine. Bring the sauce to a gentle simmer, then reduce heat to maintain a light simmer until it begins to thicken, about 2 minutes.
  4. Stir in the Dijon, coconut aminos, salt, pepper, allspice, and apple cider vinegar. Nestle the browned meatballs back into the skillet so they sit in the sauce. Simmer uncovered until the meatballs are cooked through, about 6–7 minutes. Taste and adjust seasoning with more salt or pepper if needed.
  5. Serve the meatballs hot, spooning the gravy over noodles, mashed potatoes, or roasted vegetables. Garnish with additional chopped parsley.

Notes & Tips

Serving suggestions: These meatballs are classic over mashed potatoes or wide egg noodles. For a Whole30/paleo plate, serve over cauliflower mash or roasted vegetables. A simple green salad or steamed greens make a fresh, contrasting side.

Make-ahead: Form and brown the meatballs, then cool and refrigerate for up to 2 days. Finish the sauce and reheat meatballs in the simmering gravy before serving.

Freezing: Let meatballs cool completely. Transfer to airtight containers or freezer bags with sauce; leave room for expansion. Label with the date and freeze up to 3 months. Thaw overnight in the refrigerator and reheat in an oven-safe dish at 350°F (about 20–25 minutes) or gently on the stovetop until heated through.

Substitutions & dietary notes: Use ghee instead of butter to make the recipe paleo/Whole30 compliant. Coconut milk keeps the gravy creamy without dairy. Cassava flour works as a grain-free thickener; tapioca or arrowroot can be used in similar amounts if preferred, though results may vary slightly.

Cooking tips: Do not crowd the pan when searing meatballs—browning in a single layer develops flavor and helps them keep their shape. Toasting the flour briefly prevents a raw taste and improves the gravy’s depth. Finish the dish with a splash of apple cider vinegar to brighten the sauce.

Additional Info

Author: Alex Snodgrass

Servings: 4

Like this? Leave a comment below and share how you served your meatballs.

Photography and styling by Eat Love Eats.