Halve the tomatoes crossways and squeeze out the seeds. Coarsely grate the tomatoes into a bowl down to the skin, discarding the skin. Set aside.
Trim the lamb steaks and cut into 3 cm (1 1/4 inch) pieced. Heat half the olive oil in a heavy-based saucepan over high heat and brown the lamb in each side, in batches. Set aside on a plate.
Reduce heat to low, add remaining olive oil and the onion and cook gently, stirring occasionally for 10 minutes, or until the onion has softened. Stir in the garlic, ginger, black pepper and cinnamon stick and cook for 1 minute. Add the saffron and the tomato paste and cook for a further 1 minute.
Return the lamb to the pan, along with the grated tomato, stir and season with salt and pepper. Cover and simmer gently for 1 1/2 hours. After this time, set the lid slightly ajar so that the pan is partly covered. Continue to simmer for 15 minutes, stirring occasionally, then remove lid and simmer for 25 minutes, or until the sauce has thickened. When it is very thick and almost jam-like with the oil beginning to separate, stir in the honey and ground cinnamon and simmer for 2 minutes.
Melt the butter in a small frying pan, add the almonds and cook over medium heat, stirring onto a plate at once to stop them from burning.
Remove the cinnamon stick from the lamb, transfer to a serving dish and sprinkle with the almonds.
Serve with crusty bread or couscous!