Leve ao fogo um caldeirão com bastante água e um pouco de sal. Retire o miolo do repolho usando uma faca pequena para recortá-lo em forma de cone. Separe as folhas com cuidado para não rasgá-las. Lave e reserve as folhas mais externas e machucadas do repolho, e as muito rasgadas também, para forrar a panela.
Assim que a água ferver, junte as folhas de repolho, em duas ou três levas, e cozinhe por 2 a 3 minutos, até que fiquem ligeiramente flexíveis. Retire com uma escumadeira e deixe escorrer até esfriarem. Coloque sobre uma tábua de cortar e descarte os talos duros centrais, recortando-os com uma faca afiada. As folhas maiores podem ser separadas em duas.
Coloque numa bacia a carne, o arroz, o tomate, a cenoura, a cebola, o alho, a salsinha, a cebolinha, o sal, o molho inglês, o azeite e pimenta-do-reino a gosto. Misture bem, mas sem amassar demais a carne, para que não fique dura.
Coloque uma folha ou metade de folha de repolho sobre uma superfície de trabalho e arrume cerca de duas colheres de sopa cheias de recheio no centro, em forma de croquete. Dobre as laterais sobre o recheio e enrole, sem apertar muito, formando um charuto. Repita o procedimento até usar toda a carne.
Forre uma panela grossa com as folhas de repolho mais duras e/ou rasgadas reservadas. Arrume os charutos em camadas, deixando-os bem juntos uns dos outros.
Misture o molho de tomate com água suficiente apenas para cobrir os charutos (isso vai depender do tamanho da sua panela). Despeje sobre os charutos, tampe e leve ao fogo brando até estarem cozidos. Prove um charuto de cima para saber se estão prontos – o arroz deve estar macio, mas não mole. O tempo de cozimento vai depender da panela usada e da chama do fogão, mas pode levar de 30 minutos a 1 hora.
Sirva quente ou frio.