Fill a large pot with water and add a generous pinch of salt (it should taste like seawater). Bring to a rolling boil. Add pasta shells and cook for 8-9 minutes, or according to package directions, until al dente. Reserve 1 cup of pasta water before draining. Drain and set aside.
While pasta cooks, heat a large skillet over medium-high heat. Add olive oil. When it shimmers, crumble in the ground beef. Let it sit undisturbed for 2 minutes to develop a brown crust, then break it up with a spoon. Cook for 3-5 minutes total until no pink remains. Drain most of the fat, leaving just enough to coat the bottom. Transfer beef to a plate and set aside.
Return the same skillet to medium heat. Add diced onion and cook, stirring frequently, for 2-3 minutes until soft and translucent. Add garlic and Italian seasoning. Stir for about 1 minute until fragrant. Do not let the garlic burn.
Sprinkle flour over the onion mixture and whisk quickly to coat everything evenly. Cook for 1 minute, stirring constantly, until the flour turns slightly golden and loses its raw smell.
Slowly pour in the beef stock while whisking constantly. The mixture will look lumpy at first but will smooth out. Add the tomato sauce and whisk together. Bring to a gentle boil, then reduce heat to a simmer. Let bubble for 6-8 minutes, stirring occasionally, until the sauce thickens and coats the back of a spoon.
Add the drained pasta to the skillet and toss gently to coat. Add the cooked beef back in and fold everything together.
Pour in the heavy cream slowly while stirring. Let heat through for 1-2 minutes, stirring gently. Taste and season with salt and pepper as needed (remember the beef stock and cheese add saltiness).
Remove the skillet from heat. Sprinkle the shredded cheddar over the top and stir continuously for about 2 minutes as the residual heat melts the cheese into a smooth sauce. If the sauce is too thick, add splashes of reserved pasta water to adjust consistency.
Serve immediately. Garnish with fresh parsley if desired and extra cheese on top.