Preheat oven to 350 degrees F.
Bring a large pot of water to boil and add the broccoli. Cook for 4 to 5 minutes, or just until barely tender when pierced with the tip of a sharp knife. Use a slotted spoon to transfer the broccoli to a colander to drain and then transfer it to the prepared baking dish.
Return the same pot to the heat (no need to change water) and return the water to a boil. Add the pearl onions and cook for 3 to 4 minutes, or until just tender. Drain and transfer to the baking dish with the broccoli.
Melt 3 tablespoons butter in a large saucepan over MEDIUM-LOW heat. Whisk in the flour, garlic powder, salt and pepper until smooth. Gradually whisk in the milk. Increase heat as needed to bring to a boil and cook, stirring, until thickened, about 1 to 2 minutes. Reduce heat to MEDIUM-LOW and stir in the cream cheese until smooth. Pour the mixture over the broccoli and onions in the baking dish and stir gently to coat. Sprinkle with cheddar cheese.
Tear the slices of bread into pieces and place them in the bowl of a food processor. Process until they are the consistency of bread crumbs. You should have 2 cups of crumbs. Transfer to a small bowl and toss with the Parmesan. Add 2 tablespoons melted butter and toss to combine. Sprinkle the soft bread crumbs evenly over the casserole.
Bake, uncovered, until the topping is golden brown, about 25 to 30 minutes.