Heat the oil in a large skillet over medium-high heat. Add the ground beef, breaking it apart with a wooden spoon as it cooks, until it's browned and most of the pink is gone, about 3-5 minutes. Add the diced onion and minced garlic, stirring constantly for another minute until fragrant. I prefer 80/20 ground beef because it has enough fat to stay moist and flavorful during the long slow cook without becoming dry.
Carefully pour off any excess grease from the skillet, leaving just enough for flavor. Transfer the browned beef mixture to your slow cooker. Add the beef broth, Italian seasoning, salt, garlic powder, onion powder, black pepper, and red pepper flakes. Stir well to combine all the seasonings evenly throughout the liquid. This creates your flavorful foundation that will cook slowly and develop deep, savory notes.
Cover the slow cooker and cook on HIGH for 2-3 hours or LOW for 4-6 hours, depending on your schedule. The longer, slower cook will give you deeper flavor, but HIGH will get you dinner faster. You want the beef to be very tender and the broth to be richly seasoned by the end of this phase.
Switch the slow cooker to HIGH setting. Stir in the uncooked pasta, breaking it up slightly so it's submerged in the liquid as much as possible. Pour in the room-temperature heavy cream slowly while stirring to distribute it evenly—this prevents curdling. Sprinkle in the grated parmesan and stir thoroughly until everything is combined. Cook uncovered for the final 45 minutes, stirring occasionally, until the pasta is tender and the sauce is creamy and thickened. I always use room-temperature cream for this because cold cream can shock the hot liquid and separate.
Stir the fresh spinach into the hot pasta mixture just before serving. The residual heat will wilt the spinach in about 1-2 minutes. Give the entire pot a final stir and taste for seasoning, adjusting salt or pepper if needed. Serve immediately while creamy and hot.