Heat a sauté pan or a large saucepan until hot. Add half of the butter and the onion and fry for 1-2 minutes.
Add the squash and cook for another two minutes. Add the garlic and cook for a further minute.
Add the stock and bring to the boil, reduce the heat to a simmer and cook for five minutes, or until the squash is tender.
Add the lime juice and double cream, cool slightly, then transfer to a food processor and blend to a purée. Season to taste with salt and freshly ground black pepper.
Return the purée to the pan and heat through.
Meanwhile, bring a saucepan of water to a simmer and fill a bowl with iced water.
Add the vinegar to the pan, then swirl the water and crack in two eggs at a time. Poach for 1½ minutes, or until just cooked.
Remove the eggs using a slotted spoon and transfer to the bowl of iced water. Poach the remaining eggs in the same way.
Heat a frying pan until medium-hot, add the remaining butter and heat until foaming, then add the spinach and fry gently until just wilted. Season to taste with salt and black pepper, then drain on kitchen paper.
When ready to serve, drop the eggs back into gently simmering water to reheat (approximately 30 seconds to a minute, depending on how long the eggs were sat in cold water). Lift out, drain onto kitchen paper and season with a little salt and black pepper.
Place a mound of spinach into each serving bowl, pour over the soup, top with a little more spinach and a poached egg. Finish with a drizzle of extra virgin olive oil and a few cress.