01 - Combine warm milk, sugar, and yeast in a large bowl. Let stand for 5 minutes until foamy.
02 - Stir melted butter, egg, and salt into yeast mixture. Gradually incorporate flour until soft, slightly sticky dough forms.
03 - Knead dough on lightly floured surface for 5-7 minutes until smooth and elastic. Place in greased bowl, cover, and let rise in warm place for 1 hour until doubled.
04 - Heat olive oil in skillet over medium heat. Sauté spinach until wilted, about 2 minutes. Press out excess moisture using sieve or paper towels.
05 - Combine sautéed spinach, diced ham, shredded cheese, green onions, black pepper, and garlic powder in bowl. Mix thoroughly.
06 - Preheat oven to 350°F. Grease 9x13-inch baking dish with butter or cooking spray.
07 - Punch down risen dough and roll out on floured surface to 16x12-inch rectangle.
08 - Spread ham and spinach filling evenly over dough, leaving ½-inch border around edges.
09 - Starting from long side, tightly roll dough into log. Cut into 12 equal slices using sharp knife or dough cutter.
10 - Arrange rolls cut-side up in prepared baking dish. Cover and let rise for 15-20 minutes until puffy.
11 - Brush rolls generously with melted butter. Sprinkle with grated Parmesan if desired.
12 - Bake for 25-30 minutes until golden brown and cooked through. Center should spring back when touched.
13 - Let rolls cool in pan for 5 minutes before serving warm.