Prepare the Dough: In a bowl, whisk together flour and salt. In a separate cup, mix warm water, oil, egg, and sour cream. Pour the liquid mixture into the flour and stir to form a soft dough. Knead gently on a floured surface for about 2 minutes. Cover the dough with plastic wrap and let it rest at room temperature for 30 minutes.
Cook the Potatoes: In a saucepan, add potatoes and enough water to cover them. Bring to a boil over medium-high heat, reduce to a simmer, and cook for 18–20 minutes until fork-tender. Drain the water and return the potatoes to the pan. Mash thoroughly.
Make the Filling: Mix mashed potatoes with mozzarella, cream cheese, 1 tablespoon butter, and ¼ teaspoon salt. Cover and set aside.
Roll the Dough: Divide the dough into two halves. Keep one covered while rolling the other on a floured surface to about ⅛-inch thickness. Use a 3-inch cutter to make circles. Gather scraps, combine with the reserved dough, and repeat.
Fill and Shape the Pierogi: Place 1 tablespoon of filling in the center of each dough circle. Fold over and press edges tightly to seal. For a traditional look, crimp edges a second time with a pinch-and-twist motion.
Cook the Bacon and Onion: In a skillet, cook bacon over medium heat for 1 minute to release fat. Add onion and sauté for 6–8 minutes until golden and softened. Remove from heat and mix with 1 tablespoon butter.
Boil the Pierogi: Bring a large pot of water and 2 tablespoons salt to a boil. Add pierogi in batches, stirring gently to prevent sticking. Boil for about 2 minutes until they float to the surface. Remove with a slotted spoon.
Serve: Arrange boiled pierogi on a serving dish. Top with bacon and onion mixture. Serve warm with dollops of sour cream.