Put the tomatoes in a saucepan, add the butter, onion, and salt, and cook uncovered at a very slow, but steady simmer for about 45 minutes, or until it is thickened to your liking and the fat floats free from the tomato.
Stir from time to time, mashing up any large pieces of tomato with the back of a wooden spoon.
Taste and correct for salt. Before scooping onto the sandwich, remove onion halves.
For the meatballs:
Heat the oven to 350 °F. In a medium sauté pan, warm 1 tablespoon of olive oil over medium heat. Add the onion and a large pinch of salt and cook, stirring frequently, until the onion has begun to soften and lightly caramelize, about 5 minutes. Add the garlic and continue to cook until both the onion and garlic are soft and golden brown (be careful not to burn the garlic), about another 5 minutes. Set aside to cool.
In a large bowl, combine the rest of the ingredients except for the egg. Stir it gently using two forks—combine thoroughly but do not over-mix. Using your hands, gently work in the egg and the browned onions and garlic, until just combined.
Shape the mixture into 1 1/2-inch meatballs. Brown the meatballs in a little olive oil in a large frying pan over medium-high heat (alternatively, you can skip this step to make life easier—and because you'll be covering the meatballs in sauce); then nestle them snugly into a large baking dish, cover with foil, and bake them in the middle of the oven for 15 to 20 minutes, or until the internal temperature of the meatballs reaches about 145 degrees. Let them cool for a few minutes before serving.
Spread the buns or rolls with sauce, then place meatballs on top. Add a layer of thinly sliced or shredded mozzarella over top, then send under the broiler until bubbly and golden. Shower with Parmesan. Dig in.