Swedish Meatballs
These Swedish Meatballs are tender and juicy, coated in a smooth, creamy gravy with plenty of savory flavor. Browning the meatballs in a skillet first gives both the meat and the sauce a deeper, richer taste.

What I especially love about this homemade Swedish meatball recipe is how comforting it feels without being fussy. The warm spices give the meatballs that classic flavor, while the silky brown gravy brings everything together into an easy from-scratch dinner that still feels a little special.
If you’re in the mood for more cozy meatball dinners, try my oven-baked meatballs in tomato sauce, chicken meatballs in white sauce, or these easy baked beef patties. Each one has its own flavor and cooking style, but they’re all simple, comforting dinners that are easy to come back to.
Why This Recipe Works
Using both beef and pork gives these Swedish meatballs a softer, juicier texture than beef alone. The breadcrumbs soak up the milk first, which helps keep the meatballs tender, while the sautéed onion and garlic add flavor without making the mixture feel harsh or too strong. A little allspice and nutmeg brings in that warm, classic Swedish meatball flavor without taking over.
I also like finishing the meatballs right in the gravy instead of cooking them all the way through in the skillet. They get a good browned crust first, then gently finish in the sauce, which helps them stay juicy. The gravy is made in the same skillet, so all those browned bits from the meat become part of the sauce and give it a deeper, richer flavor.

Quick Look at the Ingredients
If you’re wondering what Swedish meatballs are made of, the ingredient list is surprisingly simple. A few everyday ingredients come together to give the meatballs their tender texture, warm flavor, and rich, creamy gravy.
- Ground beef and pork: Using a mix of both gives the meatballs more flavor and keeps them softer and juicier than using beef alone.
- Breadcrumbs and milk: The breadcrumbs soak up the milk before going into the meat mixture, which helps keep the meatballs tender as they cook.
- Onion and garlic: I like to sauté them first so their flavor becomes softer and blends naturally into the meatballs.
- Allspice and nutmeg: Just a little of each adds that warm flavor Swedish meatballs are known for without making the spices too noticeable.
- Butter and flour: These form the base of the gravy and help give it a smooth, creamy texture.
- Beef broth and heavy cream: Beef broth gives the sauce its savory depth, while the cream makes it rich and silky.
- Worcestershire sauce and Dijon mustard: Both add a little extra depth to the gravy without overpowering the meatballs.
How to Make Swedish Meatballs
These meatballs come together pretty easily once everything is prepped. I like to get the meatballs browned first, then use the same skillet for the gravy so none of that extra flavor gets left behind.
Soak the breadcrumbs. Stir the breadcrumbs and milk together and let them sit for about 5 minutes. The breadcrumbs will soften and soak up most of the milk, which helps give the meatballs a tender texture.

Cook the onion and garlic. Sauté the finely chopped onion for about 3–4 minutes, until softened. Add the garlic and cook for another 30 seconds, then take the skillet off the heat and let the mixture cool slightly.

Mix the meatballs. Add the ground beef, ground pork, soaked breadcrumbs, egg, cooked onion and garlic, salt, black pepper, allspice, and nutmeg to a large bowl. Gently mix everything together just until combined. There’s no need to work the mixture too much.


Shape the meatballs. Roll the mixture into meatballs about 3–4 cm in diameter. Keeping them fairly close in size helps them cook evenly.
Brown the meatballs. Heat the butter and oil in a large skillet and cook the meatballs in batches for about 5–7 minutes, turning them as they brown. You’re looking for a nice golden crust on the outside. The centers may still be slightly undercooked at this point, and that’s exactly what you want since they’ll finish cooking gently in the gravy.

How to Make Swedish Meatball Gravy
Start the gravy. Set the browned meatballs aside, but leave the pan drippings and all those flavorful browned bits in the skillet. Melt the butter, stir in the flour, and cook for about 1 minute to make a simple roux. Slowly pour in the beef broth while stirring until the gravy is smooth.


Make it creamy. Stir in the heavy cream, Worcestershire sauce, Dijon mustard, salt, and black pepper. Let the Swedish meatball gravy come to a gentle simmer and cook just until it starts to thicken and turns smooth and silky.
Finish the meatballs in the gravy. Return the meatballs to the skillet along with any juices from the plate. Let them simmer gently in the gravy for about 8–10 minutes, turning them once or twice, until cooked through and the sauce is smooth and creamy.

Adjust the sauce if needed. If the gravy becomes a little thicker than you like, a small splash of beef broth will loosen it right back up. Taste at the end and add a little more salt or pepper only if it needs it.

Finish and serve. Once the meatballs are cooked through and the gravy is smooth and creamy, give the sauce a final taste and adjust the seasoning if needed. If it has thickened a little too much, stir in a small splash of beef broth, then spoon the gravy over the meatballs and finish with a little chopped parsley before serving.

Pro Tips
- Don’t overmix the meat. Mix just until everything comes together. Overworking the mixture can make the meatballs firm, while a lighter touch helps keep them soft, juicy, and tender.
- Keep the meatballs around 3–4 cm. This size worked really well for me because they brown nicely on the outside while still having time to finish gently in the gravy.
- Brown them in batches. Give the meatballs a little space in the skillet so they can develop a deep golden-brown crust. If the pan is too crowded, they’ll steam instead of browning properly.
- They don’t need to be fully cooked after browning. It’s completely fine if the centers are still a little undercooked at this stage. They’ll finish cooking in the gravy, which also helps keep them juicy.
- Keep those browned bits in the skillet. They add a lot of flavor to the gravy, so there’s no need to wipe the pan clean before starting the sauce.
- Add the broth gradually. Pouring it in a little at a time while stirring makes it much easier to get a smooth gravy without lumps.
- Let the gravy simmer gently. A hard boil isn’t needed here. A gentle simmer gives the sauce time to thicken while the meatballs finish cooking without drying out.
- Adjust the gravy at the end. If it gets thicker than you like, a small splash of beef broth brings it back quickly. I also prefer tasting for salt at the very end since the broth and Worcestershire already add plenty of savory flavor.
What to Serve with Swedish Meatballs
Swedish meatballs with mashed potatoes are my favorite way to serve this dish because the potatoes soak up that creamy gravy so well. I also like adding something simple and fresh on the side, like green beans, to balance out the richness of the sauce.
You can also serve them with buttered egg noodles, fluffy white rice, or roasted vegetables if that’s what you have on hand. For a more traditional touch, a little lingonberry jam on the side adds a sweet-tart contrast that works really nicely with the savory meatballs and gravy.
If you’re making mashed potatoes, my homemade mashed potatoes are a great match for this recipe.

Swedish Meatball Variations
This recipe is easy to adjust depending on what you have on hand, while keeping the same cozy flavor and tender texture that make Swedish meatballs so good.
- Use all beef. You can make the meatballs with only ground beef, although the texture will be a little firmer and less juicy than the beef-and-pork version.
- Make the gravy a little lighter. Use a bit less heavy cream and add an extra splash of beef broth for a thinner, less rich sauce.
- Add more Dijon. If you like a little more tang in the gravy, an extra small spoonful of Dijon works really well without changing the overall flavor too much.
- Try a different side. These meatballs are just as good with rice or egg noodles when you want something other than mashed potatoes.
Storage and Reheating
How to store Swedish meatballs: Let the leftovers cool, then keep the meatballs and gravy together in an airtight container in the refrigerator for 3–4 days. Storing them in the sauce helps the meatballs stay moist and keeps the gravy flavorful.
How to reheat Swedish meatballs: Warm them gently in a skillet over low heat or in the microwave in short intervals. If the gravy has thickened in the fridge, stir in a small splash of beef broth or cream until it becomes smooth again.
You can also freeze the meatballs with the gravy for up to 2 months. Let everything cool completely first, then store in a freezer-safe container. Thaw overnight in the refrigerator and reheat slowly so the sauce stays smooth.
Frequently Asked Questions
Can I make Swedish meatballs with only ground beef?
Yes, you can, but I prefer using a mix of beef and pork. The pork adds a little more fat and helps keep the meatballs softer and juicier.
Why are my Swedish meatballs tough?
The most common reason is overmixing the meat. Mix just until everything comes together, and avoid packing the meatballs too tightly when shaping them.
Do Swedish meatballs have to be fully cooked before going into the gravy?
No. I actually prefer browning them first and letting them finish cooking in the gravy. It gives them a good crust on the outside while helping the centers stay tender.
What is the difference between Swedish meatballs and Italian meatballs?
Swedish meatballs are usually smaller and seasoned with warm spices like allspice and nutmeg, while Italian-style meatballs tend to lean more on garlic, herbs, and Parmesan. Swedish meatballs are also typically served in a creamy brown gravy rather than a tomato-based sauce.
Can I bake the meatballs instead of frying them?
Yes, especially if you’re making a large batch. I still prefer the skillet method for this recipe because the browned bits left in the pan add extra flavor to the gravy.
How do I know when the meatballs are done?
Once they’ve finished simmering in the gravy, they should be cooked through in the center. If you’re checking with a thermometer, aim for 160°F for the beef-and-pork mixture.
Swedish Meatballs

Ingredients
For the Swedish Meatballs
- 1 lb (450 g) ground beef
- 1/2 lb (225 g) ground pork
- 1/2 cup plain breadcrumbs
- 1/3 cup milk
- 1 large egg
- 1 small yellow onion very finely chopped
- 2 garlic cloves minced
- 1/2 tsp salt
- 1/2 tsp black pepper
- 1/4 tsp ground allspice
- 1/4 tsp ground nutmeg
- 1 tsp butter for the onion
- 1 tbsp butter for browning
- 1 tbsp oil for browning
For the Creamy Gravy
- 3 tbsp butter
- 3 tbsp all-purpose flour
- 2 cups 480 ml beef broth
- 3/4 cup 180 ml heavy cream
- 1 tbsp Worcestershire sauce
- 1 tsp Dijon mustard
- 1/3 tsp salt or to taste
- 1/4 tsp black pepper
Instructions
- Soak the breadcrumbs. Stir the breadcrumbs and milk together in a small bowl and let them sit for about 5 minutes, until the breadcrumbs have softened and absorbed most of the milk.
- Cook the onion and garlic. Melt 1 teaspoon butter in a small skillet over medium heat. Add the finely chopped onion and cook for about 3–4 minutes, until softened. Stir in the garlic and cook for another 30 seconds. Remove from the heat and let the mixture cool slightly.
- Mix the meatballs. Add the ground beef, ground pork, soaked breadcrumbs, egg, cooked onion and garlic, salt, black pepper, allspice, and nutmeg to a large bowl. Gently mix just until everything is evenly combined. Try not to overwork the meat mixture.
- Shape the meatballs. Roll the mixture into meatballs about 3–4 cm in diameter, keeping them fairly similar in size so they cook evenly.
- Brown the meatballs. Heat 1 tablespoon butter and 1 tablespoon oil in a large skillet over medium-high heat. Add the meatballs in batches and cook for about 5–7 minutes, turning them as they brown. They should develop a nice golden-brown crust on the outside. The centers may still be slightly undercooked at this point, and that’s okay because the meatballs will finish cooking in the gravy. Transfer them to a plate and keep the browned bits in the skillet.
- Start the gravy. Reduce the heat to medium and melt 3 tablespoons butter in the same skillet. Add the flour and stir continuously for about 1 minute.
- Add the beef broth. Slowly pour in the beef broth, adding it gradually while stirring or whisking so the gravy stays smooth. Scrape up the browned bits from the bottom of the skillet as you go.
- Make the gravy creamy. Stir in the heavy cream, Worcestershire sauce, Dijon mustard, salt, and black pepper. Bring the gravy to a gentle simmer and let it cook briefly until it begins to thicken.
- Finish the meatballs in the gravy. Return the browned meatballs to the skillet along with any juices collected on the plate. Let them simmer gently in the gravy for about 8–10 minutes, turning them once or twice, until cooked through and the gravy is smooth and creamy.
- Finish and serve. Taste the gravy and add a little more salt or pepper if needed. If the sauce becomes thicker than you like, stir in a small splash of beef broth until it reaches the consistency you want. Serve warm with plenty of gravy.
Notes
- Don’t worry if the meatballs are still slightly undercooked in the center after browning. They finish cooking gently in the gravy, which helps keep them tender and juicy.
- Avoid overmixing the meat mixture or packing the meatballs too tightly when shaping them.
- Brown the meatballs in batches so they have enough room to develop a good crust instead of steaming.
- Don’t clean the skillet after browning. Those browned bits add a lot of savory flavor to the gravy.
- If the gravy thickens too much, loosen it with a small splash of beef broth.


