Brighton's Glenn Murray, who only started because of an injury in the warm-up to Florin Andone, opened the scoring on 19 minutes.
The former Palace forward finished smartly after getting on the end of a long pass from Lewis Dunk.
The home side equalised from the penalty spot five minutes into the second half, after Davy Propper fouled Andros Townsend. Luka Milivojevic sent Mat Ryan the wrong way for his ninth goal of the season.
But Knockaert had the final say with 16 minutes remaining, curling a sublime effort into the top corner after receiving a pass from Dale Stephens.
Brighton's second straight victory means they are 15th on 33 points, level with Palace a place above them.