Using a paring knife, remove the center core of the cabbage. In a large stockpot, bring 2 quarts of water to a boil. Add cabbage, core side down, and cook for 2 to 3 minutes or until outer leaves are bright green and tender. Lift cabbage from water, and remove outer leaves. Return cabbage to boiling water, and repeat brief cooking and removal of leaves until all leaves are cooked. Reserve 2 cups of cabbage cooking water. Trim the thick center vein from the bottom of each leaf. Reserve four large outer leaves to line the bottom of the pan.
In a medium skillet, melt butter over medium heat. Add onion, garlic, and mushrooms, and cook until tender and the liquid has evaporated for about 8 minutes. Add to the rice.
In a large bowl, combine onion mixture, cooked rice, ground beef, paprika, sugar, salt, pepper, and celery with leaves. Stir to combine.
Add about 1/3 cup rice/meat filling to one cabbage leaf. Fold sides of cabbage over filling, and, starting with the stem end, roll the cabbage up. Repeat with remaining leaves and filling.
Line a 6-quart Dutch oven with reserved outside leaves. Transfer stuffed cabbage leaves to the Dutch oven.
Combine tomato puree and the reserved 2 cups of cabbage cooking water in a large bowl. Pour some of the tomato sauce over the cabbage to almost cover. Sprinkle apple over top of cabbage leaves. Bring to a boil and immediately reduce to a gentle simmer; cover. Cook for 1 hour or until cabbage is very tender, adding additional tomato sauce as needed.
Notes
You can make the filling ahead, and you can even stuff the rolls ahead, just remember to reserve some of the cabbage cooking water for the sauce -- you can make that in advance if you want too.