In a saucepot add the butter and let it bubble on low to medium heat. Add the grated onions and garlic and sweat until translucent.
Add the flour and stir. It will look pasty at this stage. Cook for a couple of minutes until you get the aroma of a baked biscuit (this means the flour has been cooked out)
Add the milk a little at a time and constantly whisk over the heat ensuring the flame is not high.
Cook over the heat for 3-4 min until the sauce has thickened, constantly stir the sauce to ensure there are no lumps. It will not be smooth as the onions and garlic is in there.
At this stage add 1 coffee mug worth of the pasta water into the sauce and whisk until it is smooth. Stir until combined and take it off the heat.
Add the mustard, tomato paste, paprika, cream cheese and stir.
Add all the cheese except for the mozzarella cubes into the sauce and stir to combine.