Bring a large pot of salted water to a boil (I usually add at least 1 tablespoon of salt).
Meanwhile, cook the bacon in a large saucepan or Dutch oven set over medium to medium-high heat until cooked, crispy, and fat is rendered. Remove bacon from the pan using a slotted spoon and drain on a plate lined with paper towels. Drain the rendered fat from the pot, leaving about 2 tablespoons in the pot.
Once the pot of water is boiling, add the broccoli florets and blanch for 2 minutes. Remove the broccoli from the pot using a slotted spoon and rinse the broccoli with cold water to stop it from cooking any further. Do not drain the water from the pot!
Return the pot of water to a rolling boil. Add the dry pasta and cook 1-2 minutes less than al dente (about 6 minutes). Just before draining, reserve 1-2 cups of boiling pasta water and set aside. Drain the pasta in a large colander.
Return the saucepan with the reserved bacon fat to the stovetop and set it over medium heat. Add the onions and cook, stirring often, until they are softened (about 4-5 minutes). Add the garlic and sauté for about 30 seconds more
Melt the butter with the cooking onions and garlic. Once the butter has melted, sprinkle the onions with the all-purpose flour and mix well to combine.
Slowly stir in the chicken broth until combined with the butter and flour. Then pour in the half-and-half. Mix well to combine, and bring to a gentle boil.
Add the blanched broccoli, cooked bacon, and cooked penne to the pan. Carefully combine with the cream sauce, then sprinkle with the shredded parmesan cheese.
Return to a simmer then reduce heat to medium-low. Continue to cook for 3-4 minutes or until everything is heated through. Add additional pasta water to thin the sauce as needed.
Serve with additional Parmesan, if desired.