Remove the center core of the cabbage. Boil 2 quarts of the water in a stockpot that is not made of aluminum. Add the cabbage and cook for 2-3 minutes until the outer leaves are tender. Remove the outer leaves and continue cooking the rest, removing outer leaves and cooking the interior until all the leaves are cooked and removed. Reserve two cups of the cooking water.
Cut away the bottom of the center vein on each leaf. Place 4 large outer leaves at the bottom of the stockpot.
Melt the butter in a pan and add the onion and garlic, cooking until it is golden.
Mix onion/garlic mixture in a bowl with ground meat, rice, salt, pepper, parsley, green pepper, and celery.
Place ¼ to ⅓ cup of the rice mixture on each cabbage leaf. To roll the leaves up, fold in the sides, then begin rolling from the bottom of the leaf, tucking the edge of the leaf under the finished roll. Place the rolled leaves in the stockpot and place the chopped apple on top.
Mix tomatoes and reserved cabbage water in a bowl. Pour enough into the stockpot to almost cover the cabbage. Bring to a boil, then reduce heat to low and cover and simmer for 1 hour until the cabbage is tender. Add more reserved tomato/water mix while cabbage cooks if the level drops too far.
Optional garnish: Mix sour cream with ¾ cup of the sauce from the stockpot. Return it to the pot and stir, being careful not to disturb the cabbage rolls.