Bring a large pot of salted water to a boil and cook the pasta until al dente. Drain and set aside, reserving a small amount of pasta water.
In a large skillet over medium heat, cook the bacon until crisp. Remove bacon and set aside, leaving a small amount of fat in the pan.
Add the ground beef and diced onion to the skillet. Cook until browned and the onion is softened. Add minced garlic and cook for 30 seconds until fragrant.
Lower the heat and stir in the heavy cream and milk. Let the sauce gently warm, then add the cheddar and Parmesan cheese, stirring until melted and smooth.
Season with salt and pepper. Add the cooked pasta and toss to coat evenly, adding reserved pasta water if needed to loosen the sauce.
Sprinkle the cooked bacon over the top and serve warm.