Shoppers cheered retailers with a last-minute spree on Christmas Eve after a lacklustre festive season.