Start by preparing the dough. In a large mixing bowl, combine flour, sugar, yeast, cardamom, and salt. Mix well. In a separate saucepan, heat the milk and butter until the butter melts. Allow the mixture to cool slightly before adding it to the dry ingredients. Knead the dough until it becomes smooth and elastic. Cover the bowl with a clean cloth and let the dough rise for about an hour, or until it doubles in size.
While the dough is rising, prepare the almond filling. In a bowl, mix together ground almonds, powdered sugar, and a splash of milk. The mixture should be firm and pliable. Set it aside for later use.
Once the dough has risen, punch it down and divide it into equal portions. Shape each portion into a smooth ball and place them on a baking sheet lined with parchment paper. Cover the buns with a cloth and let them rise for another 30 minutes.
Preheat your oven to 200°C (400°F). Brush the buns with an egg wash made from beaten egg and a splash of milk. Bake the buns for 10-12 minutes, or until they turn golden brown. Remove them from the oven and let them cool completely.
Once the buns have cooled, it’s time to assemble the Semla. Cut off the top of each bun and set it aside. Scoop out the center of the bun, creating a cavity for the almond filling. Fill each bun with a generous amount of the almond mixture.
In a separate bowl, whip the heavy cream until it reaches a soft peak consistency. Add powdered sugar and vanilla extract, and continue whipping until it becomes thick and fluffy.
Place a dollop of whipped cream on top of the almond filling, and gently place the bun top back on. Dust the Semla with powdered sugar for an extra touch of sweetness.