Zaha played 45 minutes in the recent clash with Tottenham Hotspur and is available from kick-off again after a short spell returning to fitness.
Townsend is named in the bench, where Jeffrey Schlupp and Connor Wickham retain their places alongside 20-year-old Reece Hannam, who recently signed a contract extension with the club.
Zaha, along with frontman Christian Benteke, will be hoping for a similarly successful meeting with the Baggies after each netting a brace against them in December 2020.
Returning to Selhurst Park, Sam Allardyce has made no changes to the XI which drew with Newcastle United last Sunday. The only difference in his matchday squad, in fact, is Grady Diangana replacing Romaine Sawyers on the bench.
Palace: Guaita, Van Aanholt, Kouyate, Cahill, Ward, Milivojevic, Riedewald, Eze, Ayew, Zaha, Benteke.
Subs: Butland, Dann, Kelly, Hannam, Schlupp, Townsend, Wickham, Mateta, Batshuayi.
West Brom: Johnstone, Furlong, Bartley, O'Shea, Townsend, Yokuslu, Phillips, Pereira, Gallagher, Maitland-Niles, Diagne.