The City was preparing for the worst from this week’s raft of festive grocery trading updates, but supermarket shares largely held firm after a Christmas that left the big players bruised but not beaten.

The headline figures from Kantar and Nielsen’s respective market share data on Tuesday – which suggested the grocery industry had experienced its weakest festive period since 2015 – heightened concerns over the wider performance of the big four.

However, Morrisons (MRW) started a trend on Tuesday by posting sales figures that showed the mainstream grocers under pressure, but delivering better-than-expected results. The Bradford-based grocer saw a 1.7% drop in sales, excluding fuel, in the 22 weeks ending 5 January driven by falling retail sales as wholesale revenues came in flat. Although far from cause for post-Christmas celebration, it was better than the 2%-plus sales drop analysts had pencilled in.

“Morrisons beat expectations, although the bar was set fairly low,” noted The Share Centre’s Ian Forrest. “Investors will be aware the company can only manage costs up to a point as it tries to offset falling sales.”

Morrisons shares fell to four-month lows this week, but ended Tuesday up 1.6% to 195.5p on investor relief around the numbers.

If there was a festive winner from the major grocers it looked to be Tesco (TSCO). Dave Lewis this week claimed Christmas saw the “best operational performance” he had seen since he joined the supermarket in 2014, with UK like-for-like sales up 0.1% in the six weeks to 4 January, while down 0.4% for the 13-week period to 23 November.

Bernstein’s Bruno Monteyne commented: “Encouragingly, the Christmas trading performance was ahead of third quarter, showing trend improvement, and over Christmas they outperformed peers on a volume and value basis.”

Hargreaves Lansdown’s Nicholas Hyett added: “It looks like aggressive price control has kept UK sales moving forward over the Christmas period, but in a tough market Tesco has really been bailed out by a strong performance from wholesale arm Booker.”

Tesco shares were up 1.2% on Thursday to 254.1p, having reached 258.4p in early trading.

Who won Christmas? It’s easier to say who lost

The discounters won the Christmas battle in terms of pure sales growth, though both Aldi and Lidl owed their respective festive sales boost to increased store numbers rather than any significant like-for-like growth.

Lidl’s overall sales for the four weeks to 29 December rose 11% year on year, boosted by around £110m of spend switching to the discounter from rival grocers. Lidl did not split out like-for-like sales, but insisted its organic sales were “positive” over the period, helped by Lidl delivering 13% growth in its beer, wines and spirits range.

Rival Aldi’s sales were up 7.9% in the four weeks to Christmas Eve compared with the same period in 2018, breaking £1bn for the first time. Trading was boosted, it said, by particularly strong growth in beers, wines & spirits along with premium Specially Selected ranges and fresh British meat.

The more upmarket grocers also appeared to outperform mainstream rivals, with Waitrose like-for-like sales nudging up 0.4% over Christmas as its online grocery business boomed, while Marks & Spencer (MKS) saw third quarter grocery like-for-like sales rise 1.4%.

However, M&S shares fell 9.7% back to 197.2p on Thursday morning as its clothing and home arm continued to disappoint. Hargreaves Lansdown’s Sophie Lund-Yates summarised: “Competition in the clothing & home space is at fever pitch, and it’s a battle M&S isn’t winning.”

Finally, Sainsbury’s (SBRY) “ground out a decent grocery trading performance” according to Shore Capital’s Clive Black, after posting a 0.4% rise in like-for-like third quarter grocery sales to mitigate a 3.9% drop in general merchandise.

Black added: “In a challenging market, Sainsbury’s is toughing it out… [But] with focus and capital discipline, Sainsbury’s is demonstrably not a growth story as opposed to an increasingly robust income play.”

Sainsbury’s shares ended Wednesday down 1.7% to 227.2p and fell a further 1.1% on Thursday to 224.6p.