Wilfried Zaha’s stunning near post volley put the Eagles in front against the run of play after Kelechi Iheanacho had a first-half penalty saved for Leicester.
With little over 48 hours rest between the Foxes’ 2-2 draw with Manchester United on Saturday and the trip to Selhurst Park, Leicester boss Brendan Rodgers made seven changes with Jamie Vardy and Youri Tielemans among those left on the bench.
Both were introduced midway through the second-half and Leicester’s pressure was rewarded with an equaliser when Barnes fired in a low shot from the edge of the box for his eighth goal of the season.
Despite the upheaval of missing many of their star names, Leicester were still the better side and will rue not taking their chances before the break as they missed out on closing the gap to Liverpool at the top of the table to just one point.
Iheanacho was given a rare start with 33-year-old Vardy rested, but the Nigerian did little to further his case for more game time.
James Tomkins brought down Foxes defender Luke Thomas inside the area on 19 minutes and with Vardy and Tielemans not on the pitch, Iheanacho took responsibility from the spot.
However, the former Manchester City striker remains without a Premier League goal this season as he was unable to beat Vicente Guaita who produced a fine save to his left.
Dennis Praet also blazed a glorious chance over after Ayoze Perez’s deflected cross came back off the crossbar.
Palace had conceded 10 goals without reply in their last two games to Liverpool and Aston Villa.
But Roy Hodgson’s men started the second half with much better intent and got their reward in the 58th minute when Zaha fired them ahead.
Andros Townsend’s cross to the back post picked out the Ivorian, who connected sweetly on the volley to beat Kasper Schmeichel at his near post.
Vardy was summoned from the bench to find the Foxes a route back into the game, but instead it was the in-form Barnes who scored an excellent equaliser as he wriggled clear of a number of Palace challenges before firing into the bottom corner.
Leicester could have gone onto win the game in the final stages as Perez blazed over a good chance from the edge of the box.
But a point at least ensures they will end the year in the top four.