This Post May Contain Affiliate Links. Please Read Our Disclosure Policy.
Move over, IKEA. These paleo and Whole30 Swedish meatballs are SO easy to make, and full of delicious, savory flavor. Complete with an irresistibly creamy gravy, they’re perfect over mashed potatoes with a side of lingonberry or raspberry jam. Gluten free, lactose free (and easily dairy free), and low carb, too!
🇸🇪 What Makes This Recipe So Good
- Inspired by the famous IKEA Köttbullar “Swedish meatballs”, these Whole30 Swedish meatballs are full of savory flavor. Honestly – and I’m not just saying this! – I actually like these Swedish meatballs better than IKEA’s. For one thing, they’re Whole30-compatible, paleo, and gluten free. They’re also ridiculous easy to make, freeze up great for later, and just taste incredible. Plus they’re swathed by an unbelievably creamy gravy.
- While the gravy component might not be the authentic Swedish pairing, it’s pretty irresistible and I can’t imagine anyone would judge you for it. If they do, feel free to send them my way. Or just give them a spoonful and let them taste the amazingness for themselves.
- I balance out the delightful umami of the paleo meatballs and gravy with a little touch of sweetness from lingonberry jam (or raspberry fruit spread). Before you say, “But Cheryl, those aren’t Whole30-compatible!” – they technically are! First of all, make sure you’re using a compatible option with no added sugars or other off-limits ingredients. Second, foods like fruit spreads aren’t compatible if you use them in a sweet setting, like stirring them into a compliant yogurt. They’re totally allowed in a savory setting like this!
We recommend pairing these Whole30 Swedish Meatballs with our Whole30 Instant Pot Mashed Potatoes.
👩🏼🍳 Chef’s Tips
- To make the gravy really creamy, you want to use pure, full-fat coconut cream. This is NOT the same as coconut cream in a carton, or coconut creamer, or cream of coconut, or coco lopez. Seriously, don’t use those. Instead, take a can of unsweetened, full-fat coconut milk and put it in the fridge. This makes the super rich “cream” solidify and separate from the water, making it easy to use in place of ingredients like heavy cream or half-and-half.
- You may need to use 2 cans of coconut milk to produce 1 cup of pure coconut cream.
- When you’re mixing the Swedish meatball mixture, make sure you don’t overmix. Too much and you’ll end up with dense, tough meatballs. Use your hands and mix just until everything is fully incorporated.
- The coconut aminos are completely optional, used mainly for a deeper color and a little splash of flavor. If you don’t have coconut aminos already, don’t run out and buy a bottle just for this recipe.
Recipe Variations
- Instead of using a blend of ground beef and ground pork, you can make your paleo Swedish meatballs with all beef or all pork. For a leaner option, try them with ground chicken or ground turkey.
- Try cassava flour in place of the arrowroot powder. Cassava flour is my favorite paleo flour, but it can be harder to find, so I typically use arrowroot. Cassava flour will give you more traditional-tasting meatballs, though!
- Around the holidays, replace the lingonberry jam with a side of Whole30 cranberry sauce. Sweet and tart, plus a great way to use up any leftovers!
Making changes to a recipe can result in recipe failure. Any substitutions or variations listed are simple changes that I believe will work in this recipe, but results are not guaranteed.
🥘 More Recipes You’ll Love
- Easy Paleo Gravy (Whole30)
- Whole30 Instant Pot Mashed Potatoes with Garlic and Herbs
- Baked Chicken Meatballs
- Oven-Roasted Diced Potatoes
- Whole30 Chicken Bacon Ranch Poppers
- Egg Roll in a Bowl Meal Prep (Whole30, Paleo, Keto)
- Whole30 Crockpot Mashed Potatoes
- 40 of the Best Paleo Recipes Around
- Air Fryer Chicken Legs
- Whole30 Chicken Lo Mein
- Perfectly Crispy Gluten Free Fried Chicken
- Whole30 Beef Stroganoff
Whole30 Swedish Meatballs with Gravy (Paleo, Gluten Free)
Equipment
- large mixing bowl
- 2-tablespoon scoop with release handle
- large baking sheet
- Large skillet cast-iron preferred
- Tongs or spatula
- Large plate
- whisk
Ingredients
For the Swedish Meatballs
- 1 pound lean ground beef
- 1 pound ground pork
- ⅓ cup super-fine blanched almond flour
- 1 large egg
- 1 tablespoon minced fresh garlic approximately 2 large cloves
- 1 cup finely chopped white onion approximately ½ of one medium white onion
- 1 teaspoon salt more or less to taste
- ¼ teaspoon freshly ground black pepper more or less to taste
- ¼ teaspoon freshly ground white pepper more or less to taste
- 1 pinch allspice
- 2 tablespoons finely chopped fresh parsley
To Cook the Swedish Meatballs
- 2 tablespoons refined coconut oil plus more as needed
For the Gravy
- 3 tablespoons ghee or 3 tablespoons refined coconut oil
- 3 tablespoons arrowroot powder
- 2 cups compliant beef broth low-sodium preferred
- 1 cup unsweetened, full-fat coconut cream see Notes
- 1 teaspoon compliant Dijon mustard see Notes
- 1 teaspoon salt more or less to taste
- 1 teaspoon freshly cracked black pepper more or less to taste
- 1 dash coconut aminos optional
Serving Suggestions (All Optional)
- mashed potatoes or mashed cauliflower
- compliant lingonberry jam or compliant raspberry jam
Instructions
To Make the Swedish Meatballs
- Add 1 pound lean ground beef, 1 pound ground pork, ⅓ cup super-fine blanched almond flour, 1 large egg, 1 tablespoon minced fresh garlic, 1 cup finely chopped white onion, 1 teaspoon salt, ¼ teaspoon freshly ground black pepper, ¼ teaspoon freshly ground white pepper, 1 pinch allspice, and 2 tablespoons finely chopped fresh parsley to large mixing bowl.
- Gently mix together ingredients with hands, ensuring all ingredients are fully incorporated. Be careful not to overmix.
- Using scoop with release handle, portion meatball mixture into individual scoops of desired size. Roll each scoop gently between palms to form into meatballs, then place formed meatballs on large baking sheet and set aside. Repeat until entire mixture has been formed into equally-sized meatballs.
To Cook the Swedish Meatballs
- Place large skillet on stovetop over medium heat. When pan is warm, add 1 to 2 tablespoons refined coconut oil and continue heating skillet until oil is hot and shimmering.
- Once oil is hot, place meatballs in skillet in one even layer, being careful not to overcrowd pan. Work in batches as needed depending on size of skillet and size and number of meatballs.
- Cook meatballs until browned on bottom, then flip meatballs over. Repeat until meatballs are browned on all sides, then transfer cooked meatballs to large plate and set aside. Repeat with remaining meatballs until all have been fully cooked.
To Make the Gravy
- Return empty skillet to stovetop and reduce heat to medium-low. Add 3 tablespoons ghee and warm ghee until melted, swirling and tilting pan occasionally to distribute ghee across entire skillet.
- When ghee has melted, sprinkle 3 tablespoons arrowroot powder into skillet, then vigorously whisk arrowroot into melted ghee until fully combined.
- Once combined, slowly pour 2 cups compliant beef broth into skillet in small increments, whisking constantly to incorporate beef broth into arrowroot roux. Continue until all beef broth has been added and mixture has become thin and smooth.
- Increase heat under skillet to medium and continue whisking mixture until slightly thickened.
- Once mixture has thickened, remove skillet from heat and let cool slightly. Slowly pour 1 cup unsweetened, full-fat coconut cream into skillet and whisk to incorporate fully.
- Return skillet to heat. Add 1 teaspoon compliant Dijon mustard, 1 teaspoon salt, 1 teaspoon freshly cracked black pepper, and 1 dash coconut aminos (if desired). Whisk mixture until all ingredienst are fully incorporated, then reduce heat under skillet to medium-low.
- Simmer mixture 3 to 5 minutes, stirring occasionally, until gravy has thickened to desired consistency.
- When satisfied with consistency, return meatballs to skillet. Coat meatballs with gravy on all sides and simmer just until meatballs are heated through.
To Serve
- Portion mashed potatoes or mashed cauliflower onto serving plates or bowls.
- Top with Swedish meatballs, then spoon desired amount of gravy over meatballs.
- Serve warm with compliant lingonberry jam if desired and plenty of additional gravy.
- Quantity: Actual number of meatballs made will depend entirely on the size of your portions. Smaller scoops of the meatball mixture will yield more meatballs; larger scoops will yield fewer meatballs.
- Coconut Cream: Place an unopened can of unsweetened, full-fat coconut milk in the fridge overnight. When you’re ready to use it, remove the can from the fridge without shaking it. Open the can and scoop out the thick, white portion that has separated from the coconut water. This is your coconut cream. Discard the remaining liquid or use it for something else. Note: you may need to use 2 cans of coconut milk to yield 1 cup of coconut cream.
- Important: Do NOT use coconut creamer, coco lopez, or cream of coconut. These are not the same as coconut cream, and they are not Whole30-compatible. Also, be sure your coconut cream is unsweetened.
- Dijon Mustard: Be sure to use a Dijon that isn’t made with white wine or sugar. If you can’t find any or don’t have any on hand, you can omit the mustard from the recipe.
- Coconut Aminos: This is mainly to give the dish a deeper color and an extra bit of flavor. It’s totally optional – feel free to skip it if needed.
- Keep it Whole30: Replace the lingonberry jam with St. Dalfour Red Raspberry Fruit Spread. It balances the creaminess of the gravy and the umami of the meatballs while being sugar-free and Whole30-compatible.
- Make it Dairy Free: Use refined coconut oil instead of ghee, as ghee is only lactose free.
Approximate Information for One Serving
Nutrition Disclaimers
Number of total servings shown is approximate. Actual number of servings will depend on your preferred portion sizes.
Nutritional values shown are general guidelines and reflect information for 1 serving using the ingredients listed, not including any optional ingredients. Actual macros may vary slightly depending on specific brands and types of ingredients used.
To determine the weight of one serving, prepare the recipe as instructed. Weigh the finished recipe, then divide the weight of the finished recipe (not including the weight of the container the food is in) by the desired number of servings. Result will be the weight of one serving.
Did You Make This Recipe?
Tag @40aprons on Instagram and be sure to leave a review on the blog post!
Never Miss A Meal!
New Recipes Straight To Your Inbox
A curated selection of our most recent recipes, delivered straight to your inbox once a week.
This was amazing. Everything on your site that I’ve tried has been amazing. I’m just going through all your recipes and adding them all to my meal plans week by week. Best whole30 website I’ve found! And I love that I can find all the ingredients! Keep the awesome recipes coming! Can I suggest a whole30 lasagna?
That’s genius!!! It’s going on the list to develop 🙂
Are the calories per serving or for the whole dish?
Per serving. I err on the side of larger servings when doing the nutritional breakdown
Would you recommend baking instead of frying (just trying to cut down on active cooking time). What temp and for how long? Thanks!
I personally prefer them fried, since you’ll have to use that pan again anyway for the gravy. But if you want to bake them, try 400º F for 15-20 minutes!
If I use something other than coconut cream, like cashew cream, will it still yield great results?
Absolutely! I would venture to guess it’d be even better. I use coconut cream in this recipe because it’s easier than cashew cream for the average person but cashew cream is my favorite!
Allergic to nuts, what flour and ratio substitutions could I use in the meatballs?
Another reviewer used cassava flour in equal measure as the almond flour and loved them!
Honest question – I’ve made 3 of your meatball recipes (delicious! amazing!) and I’m struggling with the “20 minute” cook time. How are you pan frying 2 pounds of meatballs (on all sides, in batches, careful not to overload, scooped with a tablespoon in the Indian meatball recipe)…in 20 minutes?!! Is your cast iron pan 24″ WIDE? Am I completely failing with my 11″ le Creuset? This took us nearly double just to fry them!
It sounds like you are not filling up your batches as much as they need to be. I can usually fit all my meatballs in a recipe like this in just two batches. I don’t worry too much about overcrowding, so long as the pan is nice and hot! I let them fully brown on the bottom then, as they lose volume from cooking, shake them around to brown fully. It only takes about 8 minutes per batch. You might be cooking at too low a heat, too? I cook mine at a solid medium-high and hover obsessively! But we make a helluva lot of meatballs, so I’ve got to make sure my time is efficient!
Bake them instead. Put on a sheet pan or glass baking dish at 400 and it will take 20 minutes and they will still be browned. You could drizzle a little oil, and smooth it around the baking dish, but it’s not absolutely necessary. Bonus is no mess around the stove to clean up.
Another option is just to make the sauce and simmer the meatballs gently in the sauce. Won’t be browned, but will still be tasty.
My kids ate these up. So good!
Woohoo!!
These were great!
So glad you liked them!!!
Oops, used cassava flour instead of almond flour in the meatballs. Awesome wonderful!
Oh great to know!!
These are just meatballs. The most important ingredient in authentic Swedish meatballs is Nutmeg which is not in your recipe. It gives it a very distinct flavor.
Actually, nutmeg is not seen in most authentic Swedish meatball recipes. This is based off a recipe from an actual swede 🙂 and IKEA themselves do not include nutmeg! You can if you like, though!
We make Swedish meatballs every year on Christmas Eve and the allspice makes all the difference (we forgot it one year and could tell immediately). I don’t think we’ve ever put nutmeg in them, but the allspice is key!
Yesss! I recently remade them and the allspice is everything!!