John Singleton's original idea was for the main character to be the son of John Shaft and that the two Shafts would work together. But no studio was willing to finance the project. Paramount producer Scott Rudin demanded the character to be changed to be Shaft's nephew and for Richard Roundtree's participation to be reduced.
According to an interview with Christian Bale, one of the main reasons why he took the role was because of a fight scene between Walter Wade and Shaft on an airport runway. The scene was filmed but was cut to make room for more scenes with Jeffrey Wright who scored highly with preview audiences.
Christian Bale didn't have any interest in playing the part of the villain as he had just finished making American Psycho (2000). But he was reading through lines with Toni Collette who has the part of the witness in the film one day, and decided to give it a go as another villain after all.
Contrary to common thought, this film serves as a sequel to, not a remake of, the film Shaft (1971), since the Shaft of those films appears, once again played by Richard Roundtree, and the main character of this film is presented as his nephew. Therefore, this serves as one of the few sequels with the same title as the first film in the series.
John Singleton planned a sequel where Shaft battles drug lords in Jamaica. But the film's middling box-office returns and Samuel L. Jackson's disappointment with the film stopped any plans of a sequel.
Samuel L. Jackson and John Singleton had numerous disagreements with writer Richard Price and producer Scott Rudin over lines in the script that they found racially and sexually offensive. One scene Jackson objected to featured Shaft tossing a candy bar at a sexual partner when she wants him to take her out for dinner. The lines were deleted from the script.