Heat the oven to 425 degrees F. Place the poblano peppers directly on a rack or on a sheet pan and roast, turning every 15 minutes, until lightly charred on all sides, about 30-45 minutes. Transfer to a bowl, cover, and let cool slightly. Remove the skins, seeds, and veins, then dice and set aside.
Warm the olive oil in a large saucepan or dutch oven set over medium heat. Add the onion and cook, stirring occasionally, until softened and translucent, about 5 minutes. Add the garlic and cook, stirring, until fragrant, about 30-60 seconds.
Add the potatoes and cook, stirring occasionally, for 5 minutes. Add 2 cups of the corn kernels, reserving the remaining cup for garnish, and cook for an additional 4-5 minutes, stirring often.
Pour in the stock and add half of the diced peppers. Bring to a boil, then reduce the heat to low. Cover and simmer for approximately 30 minutes.
While the soup simmers, heat the remaining corn kernels in a small skillet for about 5 minutes, until tender, and stir in the reserved diced poblanos. Set aside.
Using an immersion blender, or working in batches with a regular blender, purée the soup until smooth, then return it to the pot over low heat. Stir in the lime juice followed by the cream. Season with the salt and pepper, tasting and adjusting as needed.
Ladle the soup into bowls. Spoon a small mound of the reserved corn and poblanos into the center of each bowl. Garnish with cilantro before serving.