Bitterballen are crispy Dutch meatballs filled with a rich, savory beef and gravy mixture, then breaded and deep-fried until golden brown. This Bitterballen recipe takes the time to make the filling from scratch, creating a creamy, intensely flavorful center hidden inside an irresistibly crunchy crust.

If you’ve never had bitterballen before, prepare yourself for a pretty incredible combination of textures and flavor. On the outside, they’re fried golden, crunchy, and crisp; inside, they’re filled with a rich, savory beef mixture that’s almost like a thick, luxurious gravy.
Bitterballen are one of those foods that seem complicated when you first look at the recipe, but the process is actually very straightforward. The key is simply giving each part of the recipe enough time to do its job. The beef needs to cook slowly until tender, the filling needs plenty of time to chill and set, and the breading needs to be sturdy enough to keep all that delicious filling inside while the bitterballen fry.
And yes, this recipe does take some time, but the result is absolutely worth it.
Traditionally served with mustard for dipping, bitterballen make a fantastic Dutch appetizer, party snack, or addition to a larger spread. They’re especially fun to serve when you’re cooking your way around the world because they’re completely different from your typical meatball.
Recipe Origins
Bitterballen are a classic Dutch bar snack, traditionally made by turning leftover meat (typically brisket) and gravy into small, breaded balls that can be fried and served with mustard. Their name comes from their historical connection to “bitter” beverages, as they were commonly served alongside drinks such as bitters or other alcoholic beverages.
What makes this Bitterballen recipe stand out is that the filling is built from the ground up rather than relying on leftover beef and gravy. This method, along with the use of a roux and gelatin to form the filling, makes it possible to have a shapeable filling for frying, but a rich gravy texture when finished. That texture is a huge part of what makes authentic bitterballen so special.
Why Make this Recipe
- Made From Scratch: I find that slow-cooked beef and homemade stock create a much deeper flavor than recipes that start with prepared gravy or leftover meat. Homemade is really always better!
- Double Breading: Two layers of egg and breadcrumbs form a sturdy crust that helps keep the creamy filling contained while frying and give you a beautiful crunchy exterior to bite into.
- Unforgettable Appetizer: Bitterballen are crispy, savory, bite-sized, and perfect for dipping in mustard, making them an especially fun addition to parties or Dutch-inspired meals.
Key Ingredients for Bitterballen

- Chuck Roast: You can use leftover shredded beef if you have some (like this beef in a slow cooker) but chuck roast is an excellent choice because it breaks down during the long cooking process, leaving the beef incredibly tender and flavorful. Traditional recipes often use beef brisket, but chuck is easier to find in smaller quantities and makes an excellent substitute.
- Beef Stock: The homemade stock is one of the most important components of the recipe because it becomes the base of the filling. Cooking the beef with onion, bay leaf, peppercorns, and cloves creates a flavorful stock that gives the finished bitterballen a deep beefy flavor.
- Gelatin: Gelatin allows the filling to firm up enough to be shaped into balls while keeping its signature soft, almost gravy-like texture once heated. Let the gelatin bloom in cool water first, and allow the beef mixture to cool slightly before adding it so the gelatin can work properly.
- Butter: Butter forms the rich base of the roux and gives the filling a silky texture. It also helps balance the leaner beef and creates a luxurious interior.
- All-Purpose Flour: Flour combines with the butter to create a roux, which thickens the beef stock and gives the filling enough structure to hold its shape.
- Dijon Mustard: Mustard adds a subtle tang and savory depth that cuts through the richness of the beef and butter. Yellow mustard can be substituted if that’s what you have available, though Dijon provides a slightly more complex flavor.
- Nutmeg: A small amount of nutmeg adds warmth and is a traditional seasoning in the creamy beef filling. You don’t need much—just enough to give the background flavor a little extra depth.
- Breadcrumbs: Breadcrumbs create the crisp exterior that makes bitterballen so irresistible. Fine breadcrumbs work well for the first coating, while slightly coarser breadcrumbs can be used for the second layer for an especially crunchy crust.
Recipe Variations
- Add a little More Flavor: Add some beef bouillon to your stock for even more flavor! A few springs of fresh thyme also taste great.
- Switch up the Meat: Beef brisket is a traditional choice and can be used instead of chuck roast. You can also try this recipe with chicken or veal.
- Skip the Meat: You can definitely make a vegetarian version of bitterballen. Ditch the beef and try the recipe with mushrooms instead.
- Make the Filling Creamier: Replace part of the beef stock with milk for a richer, creamier filling.
Tools
- Dutch Oven or Large Pot: Used to slowly cook the beef and create the homemade stock.
- Large Saucepan: Gives you enough room to build and combine the filling.
- Shallow Baking Dish: A 9×9-inch pan works well for chilling the filling in an even layer.
- Three Shallow Bowls: Makes the flour, egg, and breadcrumb breading station easy to assemble.
- Large Heavy Pot: Needed for safely heating enough oil for deep frying.
- Kitchen Thermometer: Helps you maintain the frying oil at 350°F so the bitterballen become crisp without burning.
- Wire Rack: Allows excess oil to drain while keeping the crust crisp.
How to Make this Recipe
Step 1: Simmer the chuck roast with onion and spices until the beef is fork tender. Remove the beef, finely chop it, and strain and reserve the flavorful stock.
Step 2: Create a butter-and-flour roux
Step 3: Gradually whisk in the reserved beef stock until thick.
Step 4: Stir in the chopped beef and parsley
Step 5: Stir in the gelatin, then spread the mixture into a shallow dish and refrigerate until firm.
Step 6: Scoop small portions of the chilled filling and roll them into balls.
Step 7: Coat each ball in flour, egg, and breadcrumbs, then repeat for double coating.
Step 8: Fry in small batches until deeply golden and crisp, then drain and cool briefly.
Step 9: Serve with mustard
Expert Tips
- Don’t rush the chilling process. The filling needs to become very firm before you attempt to roll it into balls. Be sure to chill the filling before shaping and then chill again before frying.
- Don’t forget to let your gelatin bloom. Do not add gelatin powder directly into your filling. Let it bloom before adding it into your mixture.
- Let the filling cool before adding the gelatin. Adding gelatin while the mixture is extremely hot can weaken its ability to set properly.
- Keep your bitterballen small. Around 20–25 grams each is ideal. Smaller balls are easier to bread and fry evenly, ensuring they won’t fall apart on you!
- Double breading matters. The second layer creates a stronger barrier between the filling and hot oil, reducing the chance of leaks. It’s also helpful to use extra fine bread crumbs for the first layer and more coarse crumbs for the exterior.
- Don’t overcrowd the frying pot. Adding too many bitterballen at once can lower the oil temperature and result in greasy rather than crispy appetizers.
- Watch the oil temperature. Aim for about 350°F. If the oil is too cool, the crust can become greasy; if it’s too hot, the outside can brown before the filling is properly heated.
- Taste the filling before chilling it. This is your best opportunity to adjust the salt, pepper, mustard, or nutmeg before the filling firms up.
Why Do Bitterballen Need Gelatin?

Gelatin may seem like an unusual ingredient in a meatball recipe, but it’s an important part of getting the traditional bitterballen texture.
The beef mixture needs to be firm enough to scoop and roll into balls when cold, but it should become soft and almost gravy-like once heated. Gelatin helps create that transformation. When cold, gelatin holds its shape and as it is heated, it melts into that perfectly gravy-like texture inside the crunchy shell.
How to Keep Bitterballen From Exploding
One of the biggest challenges when making bitterballen is keeping the filling inside while they’re frying. Fortunately, there are a few things you can do to prevent them from bursting.
First, make sure the filling is completely chilled and firm before shaping. A soft filling is much harder to work with and more likely to break through the breading.
Second, make sure every bitterbal is completely covered with flour, egg, and breadcrumbs. Any exposed filling can become an opening for hot oil to enter.
Don’t skip the second breading layer. The extra coating creates a stronger shell and gives the bitterballen a much better chance of staying intact during frying.
I also recommend chilling your balls for at least 15 minutes just before frying. Give that breading just a moment to really adhere to your filling before frying it.
How to Store and Freeze Bitterballen
Bitterballen can be time consuming but they are also a great make-ahead appetizer because the assembled, breaded balls can be refrigerated or frozen before frying.
To refrigerate them, arrange the breaded bitterballen in a single layer and keep them chilled until you’re ready to fry. If freezing, place them on a tray until solid, then transfer them to an airtight freezer-safe container or bag.
You can also freeze bitterballen after frying. Allow them to cool completely before freezing, then reheat them until hot and crispy.
Recipe FAQs

The name comes from their historical association with “bitter” drinks, which were commonly enjoyed with savory snacks like bitterballen. Despite the name, bitterballen themselves aren’t bitter, but they are delicious when served with beer!
Yes. You can use any shredded beef as a substitute, just make sure it is slow cooked and tender.
Yes. Bitterballen can be frozen either before or after frying. Freezing them before frying is particularly convenient when preparing them for a party.
There are several reasons your bitterballen may have fallen apart.
Let’s start at the beginning. Did you cook your filling long enough for it to become thick? Did you let it cool before adding your gelatin? Did you let your filling cool completely before you shaped it? Was it fairly shapeable during this step? Did you bread it twice to cover any open space?
Watch out for all these issues when making your bitterballen!
Did you enjoy this recipe for bitterballen? If so, check out these other recipes I’ve selected just for you:
If you tried this Bitterballen Recipe or any other recipe on my website, please leave a 🌟 star rating and let me know how it went in the 📝 comments below!

Bitterballen Recipe
Ingredients
Beef & Stock Ingredients
- 2.2 lb (1kg) chuck roast
- 8 cups (2L) water, or enough to cover
- 1 white onion, quartered
- 1 bay leaf
- ½ tsp black peppercorns
- 2 cloves
Filling Ingredients
- 2 tbsp unflavored gelatin powder
- ¼ cup (60 mL) water
- ½ cup (115g) unsalted butter
- ½ cup yellow onion, minced
- 1 cup (120g) all-purpose flour
- 3 cups (700mL) reserved beef stock
- 2 Tbsp finely chopped fresh flat leaf parsley
- 1 Tbsp Dijon mustard
- ¼ tsp ground nutmeg
- Salt, to taste
- Freshly ground black pepper, to taste
Assembly Ingredients
- 2 cups (240g) all-purpose flour
- 6 eggs, beaten
- 3 cups (450g) fine plain breadcrumbs
- Vegetable oil, for frying
Instructions
- Place the 2.2 lb (1kg) chuck roast, 8 cups (2L) water, or enough to cover, 1 white onion, 1 bay leaf, ½ tsp black peppercorns, and 2 cloves in a large pot or Dutch oven. Bring to a boil, uncovered, at 212°F (100°C ), skimming off any foam that rises to the surface.
- Reduce the heat to a gentle simmer and cook, covered, for about 3 hours, or until the beef is fork-tender.
- Remove the beef from the stock and set it aside to cool slightly. Strain the stock and reserve it. Finely chop the beef into small pieces.
- In a small bowl, sprinkle the 2 tbsp unflavored gelatin powder over the ¼ cup (60 mL) water (room temperature) and let it bloom for about 10 minutes.
- In the meantime, melt the ½ cup (115g) unsalted butter in a large saucepan over medium heat. Add the ½ cup yellow onion and saute until the onions start to sweat and turn translucent.
- Then add the 1 cup (120g) all-purpose flour and cook, stirring constantly, for 1 minute to form a roux.
- Gradually whisk in 3 cups (700mL) reserved beef stock until smooth. Cook, stirring frequently, for about 2-5 minutes, or until the mixture has thickened considerably.
- Add the chopped beef, 2 Tbsp finely chopped fresh flat leaf parsley, 1 Tbsp Dijon mustard, and ¼ tsp ground nutmeg. Stir until evenly combined. Taste the mixture at this point, and add salt and pepper to taste as desired.
- Remove the beef mixture from the heat and allow the mixture to cool to 120–140°F (48–60°C), then stir in the bloomed gelatin until completely dissolved and evenly incorporated.
- Transfer the filling to a shallow dish (I used a 9×9 pan) and press plastic wrap directly on the surface. Refrigerate for at least 4 to 6 hours, preferably overnight, until firm.
- Once chilled completely, scoop portions of the chilled filling and roll it into balls weighing approximately 20-25g each (about 1 Tbsp in size)
- Lay out three shallow bowls with 2 cups (240g) all-purpose flour, 6 eggs (whisked) and 3 cups (450g) fine plain breadcrumbs in their separate bowls.
- Roll each ball in flour, dip in the beaten egg, and coat with breadcrumbs. Arrange the bitterballen on a tray and freeze for 30 minutes. Then remove the tray from the freezer and repeat the egg and breadcrumb coating once more to create a double-breaded crust (to save time you can omit the freezing step, but your breading will be a little thinner and less crunchy. In this case, simply bread a second time right away).
- Arrange the breaded bitterballen on a tray and refrigerate for at least 2 hours.
- Heat about 1½-2” of vegetable oil to 350°F (180°C) in a large pot.
- Fry the bitterballen in small batches for about 3 minutes, or until deep golden brown and crisp.
- Drain on a wire rack or paper towels and allow to cool for a few minutes before serving.
- Serve warm with Dijon or yellow mustard and enjoy!


Leave a Reply