Bring a large pot of water to a boil.
Remove the core from the cabbage and place the whole head into the boiling water.
Boil for about 5-7 minutes, then carefully remove the cabbage and peel off the outer leaves. Return the cabbage to the water as needed to soften more leaves. Set the leaves aside to cool.
In a large skillet, heat the vegetable oil over medium heat.
Add the finely chopped onion and sauté until translucent, about 5 minutes.
Stir in the minced garlic and cook for another minute.
In a large mixing bowl, combine the ground meat, cooked rice, sautéed onion and garlic, egg, salt, black pepper, and dried dill (if using). Mix well to combine.
Lay a cabbage leaf flat and place about 2-3 tablespoons of the meat mixture at the base of the leaf.
Fold the sides of the leaf over the filling and roll up tightly to enclose the filling. Repeat with the remaining leaves and filling.
In the same skillet, heat the vegetable oil over medium heat.
Add the finely chopped onion and sauté until translucent, about 5 minutes.
Stir in the minced garlic and cook for another minute.
Add the tomato sauce or crushed tomatoes, beef or vegetable broth, sugar, vinegar, salt, and black pepper. Bring to a simmer and cook for about 10 minutes.
Preheat your oven to 350°F (175°C).
Spread a thin layer of the tomato sauce in the bottom of a large baking dish.
Arrange the cabbage rolls seam-side down in the dish.
Pour the remaining tomato sauce over the cabbage rolls, ensuring they are well-covered.
Cover the dish with aluminum foil and bake in the preheated oven for about 1.5 to 2 hours, or until the cabbage is tender and the filling is cooked through.
Remove the cabbage rolls from the oven and let them cool slightly.
Garnish with fresh dill or parsley if desired.
Enjoy your meal!