Warm up oil and butter in a large pot over medium heat. Add onions and cook for 6-8 minutes until softened and translucent.
Add ginger and garlic. Stir until well coated. Add in tomatoes and stir. Pour in chicken broth. Let boil and reduce heat to a simmer.
In a small saucepan, slowly cook flour and melted butter into a roux. Keep stirring it slowly until it turns a light brown liquid. Add roux to main pot. Whisk well until incorporated. Let soup simmer 10-15 minutes.
Remove from heat and using an immersion blender (or regular blender), blend soup mixture until no lumps remain. Season with salt and pepper. Put back on low head and add in cream. Cook for an adidtional 5 minutes and serve.