Heat the oven to 375°F. Brown beef and onion in a large skillet for 8 to 10 minutes until the meat reaches 160°F, then drain excess fat. Stir in garlic, tomatoes, tomato sauce, oregano, sauce salt and pepper and simmer for 10 minutes.
Meanwhile, boil spaghetti in water with the tablespoon salt until 3 minutes short of the package time. Drain and toss with butter and 1 cup of the meat sauce.
Mix softened cream cheese, cottage cheese and sour cream until spreadable. Put half the spaghetti in a deep 9-by-13-inch baking dish and spread the cheese mixture evenly over it.
Add remaining spaghetti, spread remaining meat sauce over the top and scatter with mozzarella. Cover with foil and bake for 25 minutes.
Uncover for 10 to 12 minutes until bubbling and the center reaches 165°F. Rest for at least 10 minutes and cut into 10 portions.