Wales pay dear price for win
It was a dear price to pay for an unconvincing 23-19 win against Italy in a World Cup warm-up match.
Webb suffered a suspected broken ankle in the first half, after falling awkwardly at a ruck.
And as if the sight of his first-choice scrumhalf leaving the field was not bad enough, Wales coach Warren Gatland then saw British and Irish Lions star Halfpenny follow.
Halfpenny's right knee, already heavily strapped, gave way as he moved to collect a kick 12 minutes from time.
Gatland and Wales now face an anxious wait for news on two of their star players, having already lost centre Jonathan Davies to a knee injury at the start of the off-season.
But the early signs at the Millennium Stadium were not encouraging just a fortnight before the World Cup kicks off.
The injuries compounded a frustrating game for Wales who trailed 11-8 at half-time.
Wales failed to build on the confidence gained from victory over Ireland in Dublin seven days earlier and were behind inside just two minutes.
Italy captain Sergio Parisse, back for the first time in the warm-up games, picked off Alex Cuthbert's pass intended for Taulupe Faletau as Wales threatened to score.
Parisse galloped 70 metres up-field before he was finally hauled down just short of the try line by Scott Williams. However, Italy were quickly in support and wing Leonardo Sarto surged through Cuthbert on the line to score from close range.
Tommaso Allan missed with the conversion but slotted a penalty to hand Italy a surprise ten-point lead after as many minutes in Cardiff.
Wales's response was swift and emphatic with man of the match Scott Williams the architect.
Twice the centre was involved, first when he beat opposite number Gonzalo Garcia to start the move. Sam Warburton, Jake Ball and Ken Owens all followed before Williams fired a pass out wide to hand George North an easy finish on 13 minutes, his 23rd in Tests.
Halfpenny missed the conversion but kicked a penalty that was soon cancelled out by Allan's second effort, before half-time.
Wales, under-pressure at the set-piece for much of the first half, began the second period in far brighter fashion.
Halfpenny kicked two penalties after the break to hand Wales the lead for the first time on 62 minutes, but Faletau again failed to collect the re-start and Carlo Canna's drop goal levelled the scores again.
A further two Halfpenny penalties saw Wales lead 20-14 following an immediate impact off the bench by Ross Moriarty only for Welsh fortunes to be struck once again.
Halfpenny, who passed 500 points for Wales in the game, was left punching the ground in frustration as he waited to be carried off the pitch as a stunned 52,000 fans watched on in horror.
Dan Biggar took over the kicking duties and landed a penalty five minutes from time.
But having opened the scoring, Italy also had the last say when replacement Guglielmo Palazzani barged through Matthew Morgan on the line to score.
The conversion sailed wide and Wales were winners, but it hardly felt like a victory given the potential loss of two key players.
Man of the match: Sam Warburton had a massive game. He was strong on defense and managed to steal some crucial balls at the rucks. However, Leigh Halfpenny was very good under the high-ball and managed to kick Wales to victory with two late penalties -putting them out of reach after a late Italian onslaught.
Moment of the match: Two injuries to key players. Leigh Halfpenny and Rhys Webb were both stretchered off the field – the extent of their injuries are not confirmed – but if they fail to make a full recovery it will surely dent the Welsh World Cup aspirations.
Villain of the match: The discipline was impeccable from both teams.
The scorers:
For Wales:
Try: North
Pens: Halfpenny 6
For Italy:
Tries: Sarto, Palazzani
Pens: Tommaso Allan 2
DG: Carlo Canna
Teams:
Wales: 15 Leigh Halfpenny, 14 Alex Cuthbert, 13 Cory Allen, 12 Scott Williams, 11 George North, 10 Dan Biggar, 9 Rhys Webb, 8 Taulupe Faletau, 7 Sam Warburton (captain), 6 James King, 5 Dominic Day, 4 Jake Ball, 3 Tomas Francis, 2 Ken Owens, 1 Gethin Jenkins.
Replacements: 16 Kristian Dacey, 17 Paul James, 18 Aaron Jarvis, 19 Luke Charteris, 20 Ross Moriarty, 21 Gareth Davies, 22 Rhys Priestland, 23 Matthew Morgan.
Italy: 15 Andrea Masi, 14 Leonardo Sarto, 13 Luca Morisi, 12 Gonzalo Garcia, 11 Giovanbattista Venditti, 10 Tommaso Allan, 9 Edoardo Gori, 8 Sergio Parisse (captain), 7 Francesco Minto, 6 Alessandro Zanni, 5 Joshua Furno, 4 Quintin Geldenhuys, 3 Martin Castrogiovanni, 2 Leonardo Ghiraldini, 1 Michele Rizzo.
Replacements: 16 Andrea Manici, 17 Matias Aguero, 18 Lorenzo Cittadini, 19 Valerio Bernabò, 20 Samuela Vunisa, 21 Guglielmo Palazzani, 22 Carlo Canna, 23 Luke McLean.
Referee: Jérôme Garcès (France)
Assistant referees: Greg Garner (England), Dudley Phillips (Ireland)
TMO: Simon McDowell (Ireland)
