Finnish meatballs, or lihapullat, are tender bites of ground beef and pork seasoned with onion and warm allspice, usually served with a creamy pan gravy. This home-style version browns the meatballs before finishing them in the oven, making it easier to cook them evenly and pair them with mashed potatoes and tart lingonberries.
Ingredients
- ½ cup (30 g) plain fine breadcrumbs
- ⅓ cup (80 ml) whole milk
- 1 pound (450 g) ground beef, preferably 85% lean
- ½ pound (225 g) ground pork
- ½ cup (75 g) finely grated yellow onion
- 1 large egg (about 50 g without the shell)
- 1 teaspoon (6 g) fine salt
- ¼ teaspoon (0.5 g) ground allspice
- ⅛ teaspoon (0.25 g) ground white or black pepper
- 1 tablespoon (15 ml) neutral cooking oil, such as canola oil
- 2 tablespoons (28 g) unsalted butter
- 2 tablespoons (16 g) all-purpose flour
- 1½ cups (360 ml) low-sodium beef broth
- ½ cup (120 ml) heavy cream
- 1 teaspoon (5 ml) soy sauce
- 1 teaspoon (5 ml) Dijon mustard, optional
Instructions
- Soak the breadcrumbs. Heat the oven to 400°F (200°C). In a medium bowl, stir the breadcrumbs and milk together and leave them to soften for 5 minutes. The mixture should look moist and thick, without a pool of milk at the bottom. This short soak helps the meatballs stay tender rather than turning dense.
- Mix the meatball mixture. Add the beef, pork, grated onion, egg, salt, allspice, and pepper to the soaked breadcrumbs. Use clean hands or a fork to mix just until everything is evenly combined. Stop as soon as the ingredients come together; prolonged mixing compacts the meat and can make the finished meatballs springy.
- Shape the meatballs. With lightly damp hands, roll the mixture into about 20 balls, each roughly 1¼ inches (3 cm) across. Aim for a similar size so they cook at the same rate. Set them on a plate or tray as you work. If the mixture feels very sticky, dampen your hands again rather than adding extra breadcrumbs, which can make the meatballs dry.
- Brown in batches. Warm the oil in a large oven-safe skillet over medium heat. When the oil shimmers, add enough meatballs to leave a little space between them. Brown for about 4 minutes, turning them gently so several sides develop a golden crust; they do not need to be cooked through yet. Transfer the first batch to a clean plate and brown the remaining meatballs, adding a small splash of oil if the pan is dry. Crowding the skillet traps steam and makes browning harder.
- Finish cooking in the oven. Return all the browned meatballs to the skillet in one layer. If your skillet is not oven-safe, arrange them in a shallow baking dish instead. Bake for 12 minutes, then check the center of a larger meatball with a food thermometer. USDA FSIS sets 160°F (71°C) as the safe minimum internal temperature for ground meat; cook a little longer and check again if needed. Set the cooked meatballs aside on a clean plate, loosely covered while you make the gravy.
- Make the creamy gravy. Set the skillet on the stovetop over medium-low heat. Carefully pour off excess fat if there is more than about 1 tablespoon left, keeping the browned bits in the pan. Add the butter; once melted, whisk in the flour and cook for about 1 minute, stirring so the roux does not scorch. Gradually whisk in the beef broth, scraping up the browned bits. Simmer and stir for 3 minutes, until the gravy starts to thicken.
- Finish and serve. Stir in the cream, soy sauce, and optional Dijon. Simmer gently for 2 minutes; avoid a hard boil, which can make a cream sauce less smooth. Taste and adjust the salt or pepper if needed. Return the meatballs and any juices on the plate to the skillet, turning them in the gravy until hot. Serve right away.
Tips
- Grate the onion finely. Fine onion blends into the mixture and adds moisture without leaving large, crunchy pieces. If grating is awkward, mince it very finely. A coarser chop is more noticeable in the finished meatballs.
- Keep the mixture gentle. Mixing just until combined and shaping with damp hands help preserve a soft texture. Avoid packing the balls tightly or pressing them flat in the pan. Use a broad spatula or tongs to turn them carefully while browning.
- Choose a practical allspice substitute. Ground allspice is common in Finnish-style meatball seasoning, but if you do not have it, use a small pinch of cinnamon and a small pinch of ground cloves in its place. The flavor will be warmer and less peppery, so start modestly. Do not substitute an equal amount of a strong spice blend.
- Adjust gravy consistency gradually. If it becomes too thick, whisk in broth a tablespoon or two at a time. If it seems thin, simmer it gently for another minute or two before returning the meatballs. Taste before adding extra salt because broth and soy sauce can both be salty.
Serving Suggestions
For a familiar Finnish-style plate, serve the meatballs and plenty of gravy over mashed potatoes. Buttered egg noodles or boiled potatoes are good alternatives when you want a simpler side. Add something tart alongside: lingonberry preserves are traditional in many Nordic-style servings, and their sharp, fruity flavor balances the rich sauce. Lingonberries can be difficult to find in some grocery stores; whole-berry cranberry sauce or unsweetened cranberry preserves are practical substitutes, though they taste more familiar and less distinctly tart.
A spoonful of quick-pickled cucumber or a crisp green salad also brings freshness to the plate. Steamed green beans, peas, or roasted carrots round out the meal without competing with the allspice. If you are serving family-style, keep the meatballs in their skillet or transfer them to a warm serving dish and spoon the gravy over them just before bringing them to the table. Put extra gravy in a small jug so everyone can add more to potatoes or noodles.
Variations
Use all beef. Replace the pork with another ½ pound (225 g) of ground beef. The meatballs will have a more direct beef flavor and may be a little firmer, especially if the beef is very lean. Keeping the breadcrumb-and-milk mixture unchanged helps preserve tenderness.
Make a lighter-tasting sauce. Replace the heavy cream with half-and-half, or use whole milk for a thinner, less rich gravy. Add the dairy over low heat and do not let the sauce boil vigorously. You may need to simmer it a little longer to reach the thickness you like.
Make the gravy without cream. Omit the cream and use a total of 2 cups (480 ml) beef broth. The result is a more broth-forward brown gravy rather than a creamy sauce. If you want it slightly fuller, whisk 1 teaspoon (3 g) cornstarch with 1 tablespoon (15 ml) cold water and stir it into the gently simmering gravy.
Try a different seasoning. A pinch of ground nutmeg can accompany the allspice, while a little extra black pepper makes the seasoning more pronounced. Keep additions restrained so the warm spice does not overwhelm the meat. Regional and household versions of Finnish meatballs vary, so the exact balance of spices and the choice of beef, pork, or a mixture can differ.
Storage and Reheating
Refrigerate cooked meatballs and gravy within 2 hours of cooking, in a covered, shallow container. They keep for 3–4 days in the refrigerator. Store the sauce with the meatballs so they do not dry out, and use a clean spoon when serving from the container.
For longer storage, freeze the cooled meatballs and gravy in a freezer-safe container for about 2–3 months for best quality. Thaw them overnight in the refrigerator. Cream sauces can separate slightly after freezing; stir gently while reheating to bring the sauce back together, adding a splash of broth if it is too thick.
Reheat a portion in a covered saucepan over low to medium-low heat, stirring gently and turning the meatballs so they warm evenly. Add a little broth or water if the gravy has thickened in the refrigerator. Check that leftovers reach 165°F (74°C) before serving, using a food thermometer. You can also microwave a covered portion in short intervals, stirring the sauce between intervals and checking the temperature in a meatball and the surrounding gravy.
Frequently Asked Questions
Can I make Finnish meatballs ahead?
Yes. You can mix and shape the meatballs up to a day ahead, cover them, and refrigerate them until you are ready to brown and cook them. Keep raw meat refrigerated, and do not leave it at room temperature while you prepare other parts of the meal. The gravy can also be made ahead and refrigerated separately; warm it gently and stir before combining it with freshly cooked meatballs.
Why are my meatballs tough?
The most common causes are overmixing, compact shaping, or using very lean meat without enough moisture. Mix only until the ingredients are evenly distributed, and roll the portions gently. The soaked breadcrumbs and milk help soften the texture. Also avoid cooking the meatballs much longer than needed once they reach the safe minimum temperature.
Can I cook the meatballs entirely on the stovetop?
Yes. After browning, reduce the heat to low, cover the skillet, and cook the meatballs gently, turning them once or twice, until the centers reach 160°F (71°C). The time varies with their size and the pan, so use a food thermometer rather than relying only on a timer. Make the gravy after transferring the cooked meatballs to a clean plate.
What can I use instead of lingonberries?
Cranberry preserves or whole-berry cranberry sauce offer a useful tart-sweet contrast. Red currant jelly is another option if available. Lingonberries have a distinctive bright tartness, so substitutes will not taste exactly the same; choose a less-sweet cranberry product if you want the side to balance the creamy gravy.
Can I prepare these without breadcrumbs?
Breadcrumbs help bind the mixture and keep the meatballs tender. For a gluten-free version, use certified gluten-free breadcrumbs in the same quantity and check that the broth and other packaged ingredients are also labeled gluten-free if needed. Finely ground oats can work in a pinch, but they may give the meatballs a slightly different texture and flavor.
More recipes to cook
Safety notes: safe minimum internal temperatures from USDA FSIS; raw and undercooked fish guidance from the U.S. FDA. Food safety notes
Spotted an error? Tell us and we will correct it (corrections policy).