Heat a large sauté pan over medium heat, add the olive oil and heat through. Add the butter and allow to melt then add the onions.
Sauté until the onions are soft and tender, about 10 minutes, then reduce the heat to medium-low and cook, stirring occasionally, until the onions are uniformly brown and caramelized, about 30 minutes.
In a medium bowl stir together the caramelized onion with the sour cream, cilantro, lime zest, ginger and onion powder. Season to taste with salt and pepper.
Cover the dip and refrigerate for at least 30 minutes to let the flavors come together.