Sourdough Fish Buns

fish buns
Jump to recipe

Fish buns are a very popular “short eat” in Sri Lanka. Any eatery, bakery or even a small road side boutique shop carries these soft buns. Usually accompanied by a cup of plain black tea, this much loved stuffed bread roll was introduced to us, the Ceylonese (Island was called Ceylon back then), by the Portuguese settlers. I don’t think the younger generation is even aware of this fact! For us this has been there for all eternity and who would bother to question about the origin, when something is this delicious ?!! 😀

A rather interesting thing happened the other day, as soon as I posted these buns on the Instagram. Several of my fellow baking enthusiast/foodies from around the world came up with their version of this same bread roll. I had a blast Googling all those and learnt more about each every variety and the cultures behind them. If you are interested, following are a few of the variations that came up;

Tuna fish buns – Hong Kong
Piroshki – Russia and Ukraine
Fatayer – Lebanon
Esfirra – Brazil

May be there are more varieties out there, let me know in the comments.

fish buns
Perfect with a cup of tea or coffee

Even though these are tastier with actual white fish, we always used canned mackerel for this, because it is very convenient and also there’s no need to worry about fish bones (tiny pin bones could be annoying to remove).

This is a yeasted dough, meaning we use yeast to leaven the dough, but I created this recipe to use sourdough starter (natural levain). It adds more flavor to the dough and I find it very liberating not having to depend on store bought yeast. Also I like the fact that I can span out the process across two days, which gives me more time to relax and do other things in between. Unlike yeasted dough, I don’t have to worry about over-proofing the buns as these are sourdough ( a delay of 15 minutes is not as disastrous).

fish buns

If you are worried about sour flavor in the dough, well you wouldn’t notice it as the savory filling is going to overpower the bread. And if you maintain your starter, and used a fed healthy leavain, then the sourness will be minimal ( just right! in my books) And also you can bake these on the same day without retarding overnight.

Let’s start by making the fish filling! You can, of course, use any filling of your choice.

steamed potatoes

Steam the potatoes, remove the skin and roughly smash.

I use the microwave to cook the potatoes. Place them on a plate, dock each potato with a fork and cook on high for 6-8 minutes or until potatoes go soft. Leave to cool and remove skin.


Finely chop the onions, garlic, Thai chili peppers, herbs. Heat 3-4 tbsp oil in a saucepan and add the chopped up aromatics in the pan. Cook string until onions become translucent and fragrant. Add the spices and continue to cook on medium heat for another minute.

add potato and fish

Add the mashed potatoes and canned fish (mackerel/or cooked white fish). Continue to cook string for a further 3-4 minutes. Make sure to break the big pieces of fish and potato. Add salt and pepper give a good mix and taste. Adjust salt and spices if necessary. If the mixer seems too dry add a splash of water or canned water from the mackerel. Once the mixture comes together, take off the heat.


This is how the filling should look like. Spread it on a tray to cool faster and set aside.

This can be made ahead and refrigerated until needed. Let it come to room temperature before you use it(otherwise cold filling will slow the proofing of the bun once inside)


You should have a starter ( your levain) ready. This can be anywhere from 80 – 100 % hydrated. The ratio to feed depends on how fast you want the levain to be ready/ripe. Read more about starter here. About feeding instructions here

Check the recipe notes for the instructions on how to use commercial yeast( instant fast acting yeast) instead of sourdough

make the dough

To make the dough, place everything except milk in a bowl of a stand mixer and start mixing using the dough hook. Add milk gradually until everything is fully hydrated, like shown in the picture.

If your egg is larger or starter(leavain) is runny, you might not need the whole 1 cup of milk. It’s okay to leave about 1-2 tablespoon of milk behind.

knead the dough

Increase the speed to medium ( 2 or 3) and start mixing. Scrap down the sides and use flour to aid mixing. If too sticky, let the mixture sit for 10-15 minutes and then mix again. Use a little dusting of flour to help release the dough from the sides of the bowl. When it looks like the picture, it is ready to come out.

finish kneading

Take the dough out on to a floured surface. We will finish kneading by hand. Use a light dusting of flour to stop the dough sticking to your hand/bench. Knead the dough (stretch and fold) until it becomes smooth and elastic ( for about 4 minutes) This dough is soft and easy to work with and a pleasure to handle. You will enjoy kneading this dough.

If it is still too sticky, let it rest for about 15 minutes or use some flour.

smooth dough

You will end up with a smooth dough like this. Do not try to do ‘window pan test’ as it is not necessary and we are not looking for that level of gluten development.

Be careful not to over knead the dough. If the dough becomes too tough or elastic, the resulting bun will be on the chewy side.

place in a bowl

Place the dough in a lightly greased bowl ( glass or plastic) and lightly cover with a lid or damp tea towel and leave in a warm place to bulk.

Will take about 3-4 hours in a warmer place (27 – 29 °C) Always look for the visual clues rather than the time.

dough bulked

We are looking for a dough that has almost doubled in volume. It doesn’t have to be double exactly. Considerable expansion with air bubbles inside and looking puffed up is enough signs.

Now punch this dough (again a very satisfying thing to do) down and round up to a tight ball and place in a air tight container and refrigerate for about 18 – 22 hours. Less is fine too.

For a same day bake, avoid retarding but refrigerate for 2-3 hours for ease of handling.

let it thaw

Shaping the buns:

If the cold dough is too tough, let it sit at room temperature until soft enough to mold. Divide the dough in to 14 ( 65 g – 68 g) pieces or 12 (80 g) pieces.

round up each dough ball

Pre shape the dough pieces into tight smooth balls, just like when you are making bread rolls/dinner rolls. Use a little flour to stop dough from sticking.

Once done, set aside and cover with a tea towel ( to prevent drying) and let these rest for about 20-30 minutes

Following video shows how to shape the fish buns.

Flatten a dough to a circle, place filling in the center, apply a little water around the edge and fold inwards to form a triangle
place on a tray

Place the shaped buns on a tray lined with parchment. Leave space around the buns as they proof a bit and puff up in the oven. I used two trays ( 7 buns on each)

Now lightly cover the tray and leave in a warm place to proof.

Took about 2.5 hours in a warm (27 – 29 °C) place.

proofed buns

When these are almost ready, preheat the oven. Place a rack in the center.

I bake one try at a time. If your oven is a convection that heats evenly, you can try to bake both trays at once, but rotate towards the end.

These take only 15 minutes to bake so 1 tray at a time is really not that bad.

egg wash

Once the oven is ready, lightly egg wash the buns and bake for 15 minutes ( if not golden brown, give another 2-3 minutes)

Once they turn Golden brown on top, remove from the oven and leave on a wire rack to cool.

fish buns
Airy light crumb and the savory filling
fish buns
Golden brown perfectly puffed up soft fish buns

You may also like


  1. These look great. I’ve been struggling with how to get a good filling to sweet bun ratio. This technique looks perfect.

  2. I’m from Russia and love pirozhki! You can do with many different types of filling: meat, vegetables, cheese, mushrooms, etc. AND sweet too.

    1. Yes! they are quite similar and yummy. I have had one from Piroshky Piroshky Bakery in Seattle.

Leave a Reply

Your email address will not be published. Required fields are marked *

The reCAPTCHA verification period has expired. Please reload the page.