Bring a large pot of salted water to a boil over high heat.
Add cabbage and cook, pulling off each outer leaf with tongs as it becomes tender, about 1 to 2 minutes per leaf.
Transfer leaves to a baking sheet and continue until you have 15 to 20 leaves.
Heat oil in large saucepan over medium-high heat.
Add sliced onions and celery, season with a healthy pinch of salt and pepper, and cook, stirring, until lightly caramelized, about 15 minutes.
Add tomato paste and cook, stirring, until lightly caramelized further, about 2 minutes.
Add honey, lemon juice, and tomatoes and bring to a boil (crush the tomatoes with your hands over the sauce, and then drop them in. Also add the juice from the can).
Reduce heat to medium-low and cook, partially covered, until reduced, about 15 minutes.
Heat oven to 350°F.
In a large bowl, combine the remaining chopped onion, beef, rice, stock, paprika, cayenne, egg, pinch of salt and pepper.
Place 2 tablespoons beef mixture in center of each cabbage leaf, fold sides inward, and then roll up.
Transfer rolls, seam side down, to a 9" x 13" baking dish.
Pour tomato sauce over rolls and bake until filling is cooked through, 50 minutes. Let cool for 10 minutes. Serve, passing extra sauce at the table.