Heat 175ml water in a saucepan until steaming, then add the butter. Remove from the heat and leave to cool until the mixture is just warm (it should not be hot). Combine the flour, yeast, sugar and 1 tsp salt in a large bowl or stand mixer. Add the cooled butter mixture, and mix to a soft dough using a wooden spoon or the mixer. Knead for 10 mins by hand (or 5 mins using a mixer) until the dough feels bouncy and smooth. Transfer to an oiled bowl and cover with a clean tea towel. Leave somewhere warm to rise for 1½-2 hrs, or until doubled in size. Alternatively, leave to prove in the fridge overnight.
Oil and line a baking sheet with baking parchment. Knock the air out of the dough, then knead again for several minutes. Flatten a small piece of dough (about 20g) into a disc, and put a cube of the mozzarella and a pinch of the gruyère into the middle of the disc. Enclose the cheeses with the dough, then roll into a ball. Transfer to the prepared baking sheet. Repeat with the remaining cheese and dough, placing the dough balls ½cm apart on the baking sheet – they should be just touching after proving. Cover with a clean tea towel and leave somewhere warm to rise for 30 mins.
Meanwhile, make the garlic butter. Melt the butter in a small pan over a low heat, then stir in the garlic and rosemary. Remove from the heat and set aside until needed. Heat the oven to 180C/160C fan/gas 4. Brush the risen dough balls with the garlic butter, then bake for 25-30 mins until the dough balls are cooked through and the middles are oozing.
While the dough balls are baking, make the tomato sauce dip. Heat the oil in a saucepan and fry the garlic for 30 seconds. Tip in the passata, vinegar, sugar and chilli flakes, and simmer for 10 mins until thickened. Season to taste and stir in the basil. Brush the warm dough balls with any remaining garlic butter, then serve with the tomato sauce dip on the side for dunking.