Preheat your oven to 350°F (175°C). Line a 12-cup muffin tin with paper liners to prevent sticking and to make removal easy after baking.
In a large bowl, combine 2 1/2 cups all-purpose flour, 3 teaspoons baking powder, 3/4 teaspoon salt, 1 cup granulated sugar, and the zest from 1 lemon. Whisk these dry ingredients together until evenly blended. Add the 2 1/2 cups fresh blueberries to the bowl and toss well to coat the berries with the flour mixture. This helps prevent the berries from sinking to the bottom of the muffins during baking.
In a large measuring cup or a separate bowl, measure out 1 cup low-fat milk and 1/2 cup vegetable oil. Add 2 eggs and whisk until the wet ingredients are completely combined. I like to ensure the eggs are at room temperature for a more even batter.
Pour the wet ingredient mixture from Step 3 into the bowl with the dry ingredients and blueberries from Step 2. Gently mix until just combined and no streaks of flour remain, being careful not to overmix to keep the muffins tender.
In a small bowl, combine 1/2 cup all-purpose flour, 1/3 cup granulated sugar, 1/2 teaspoon baking powder, 1/4 teaspoon ground cinnamon, and 4 tablespoons cold butter. Use a fork to cut the butter into the dry ingredients until the mixture is crumbly. For an extra crisp topping, I sometimes pop the streusel in the fridge for 5 minutes before sprinkling it onto the muffins.
Distribute the muffin batter evenly among the 12 prepared muffin cups. Sprinkle each muffin generously with the crumbly streusel topping from Step 5.
Place the muffin tin in the preheated oven and bake at 350°F (175°C) for about 20 minutes, or until the streusel topping becomes a light golden brown and a toothpick inserted into a muffin comes out clean. Allow to cool slightly before serving. I like to enjoy these muffins warm with a little extra butter on top.