Preheat oven to 350 degrees F.
In a large skillet cook and crumble the ground beef and season with salt and pepper. Remove grease.
Add onions and cook for a few minutes until onion is translucent.
Add all but 1/2 cup of the marinara sauce (reserve 1/2 cup for later) to the mixture and stir to combine. Set aside.
Cook Spaghetti according to package instructions, just until “al dent”. Drain, and place hot spaghetti back in the pan you cooked it in.
Add butter and 1/2 cup reserved marinara sauce and toss to combine.
Combine cream cheese, sour cream and cottage cheese in a bowl and mix well.
Pour HALF of the spaghetti noodles into a 9×13’’ baking dish, spread out evenly.
Spread cheese layer on top of the spaghetti noodles.
Top with remaining spaghetti noodles, spreading out evenly.
Add meat sauce on top and smooth into an even layer.
Cook for 30 minutes or until hot and bubbly.
Take out of oven and add grated cheese, spreading it all over the top. Return to oven and cook for 10 more minutes.
When done wait at least 15 minutes before cutting and serving, to allow it to set up. Enjoy!