Sabri Lamouchi's men strengthened their position in the Sky Bet Championship play-off spots, with three points seeing them move up to fourth on Wednesday evening.
Bristol City did show signs of promise at the City Ground but Lee Johnson's stuttering side saw their winless streak extend to an eighth match as Silva's moment of magic and Williams' ill-discipline helped Forest to a 1-0 triumph.
While Forest head into Saturday's clash with bitter rivals Derby buoyed by this latest win, defeat means the play-offs are surely out of reach for the Robins.
Johnson's men failed to capitalise on a bright start by the Trent and saw goalkeeper Niki Maenpaa forced off in an injury-interrupted first half, with replacement Daniel Bentley doing superbly to deny Matty Cash.
But the City substitute could do little to prevent Silva's superb free-kick from the edge of the box, with hopes of a comeback harmed when experienced defender Williams was sent off for putting his forearm into Yuri Ribeiro's face.
Forest were pinned back and only making half-hearted attempts to attack, with Maenpaa racing off his line to force Lewis Grabban wide when the striker was set free.
That moment came to nothing but saw the City goalkeeper hurt his ankle, leading to treatment throughout the drinks break and Bentley replacing him in the 28th minute.
The visiting stopper had little time to settle before superbly stopping a Cash strike, with Ryan Yates heading over from the resulting corner.
Tobias Figueiredo went even closer when meeting another set-piece with a header that whistled just over, with Sammy Ameobi's strike going similarly close towards the end of a disjointed first half.
Joe Lolley did not return for the second period after appearing to pick up an injury – a blow that could have been compounded by City had Figueiredo not done well to thwart Nahki Wells at the back post.
Forest did well to stop that opportunity and began to threaten at the other end, with Grabban's tantalising low cross begging to be finished at the far post.
The hosts continued to push and made the breakthrough from a free-kick in the 62nd minute. Silva stepped up to the ball on the edge of the D and bent a lovely strike into the top left-hand corner.
It was a gut punch that City failed to respond to, with matters getting worse in the 78th minute when Williams lost his cool and received a red card for lashing out at Ribeiro.
The Portuguese received treatment and was able to continue, soon producing a smart clearance at the far post to turn a Jamie Paterson cross behind.
City continued to push but Lamouchi's well-drilled team held out, with Afobe heading off target late on.