In a large soup pot, heat 2 tablespoons of oil over high heat. Add about a third of the broccoli, just enough so that it covers the bottom of the pan in a single layer without overcrowding. Cook broccoli without moving it for about 3 to 4 minutes, or until dark brown on 1 side only (leave the other side bright green). Transfer to a big bowl and repeat with more oil and the remaining broccoli. When all the broccoli has been browned, season with 1 teaspoon salt and set aside.
Reduce heat to medium-low. Add butter and remaining 2 tablespoons of oil to pan. Add onions and garlic, black pepper, red pepper flakes, and ½ teaspoon salt. Cook until the onion is soft and translucent, about 4 minutes.
Add potato to the pot with 1 quart water and remaining 1 teaspoon salt. Bring to a simmer, cover pot and cook until potato is just tender, 10 to 15 minutes.
Add broccoli, cover again and cook until tender, another 5 to 10 minutes.
Add lemon zest and purée soup with an immersion or regular blender, to your desired texture.
Stir in lemon juice.
Finish with grated Parmesan.