The Reds extended their remarkable unbeaten run to eight matches, moving them to within one win of the top six places. But Phil Parkinson's Colchester pushed them all the way, as they attempted to bring an end to a run of just one win in nine matches, that has threatened to de-rail their own promotion hopes.
Perch's 72nd minute strike was decisive, as he deflected the ball into the back of the net from a Wayne Brown clearance, after the defender had made a fine tackle to deny Grant Holt.
With most of the other promotion chasing sides slipping-up at the top, it gave Forest fresh hope of mounting a late promotion push under Frank Barlow and Ian McParland.
The two sides may have gone into the match in contrasting runs of form, but it was hard to tell which was which in the first half.
Colchester's approach to the game was more effective, as they defended with two solid banks of four when not in possession, limiting Forest to a limited number of chances - while often looking dangerous on the break themselves.
Rune Pedersen was certainly the busiest of the two keepers in the first period, as he made several crucial saves most notably from a powerful Neil Danns header and twice from long range efforts from United skipper Karl Duguid.
Forest enjoyed long spells of possession, but without being able to show their characteristic attacking threat.
Kris Commons laid on one early opportunity as his curling free-kick from the left was perfectly floated to Grant Holt, but the striker failed to connect with a header when only the slightest of touches was required to guide the ball home.
But the only real save former Notts County man Aidan Davison had to make at the other end was when Nathan Tyson and Wes Morgan both stretched to connect with another Commons delivery on the edge of the six-yard box and - although it was unclear who got the final touch - the keeper saved well diving to his left.
After the break, Forest had an immediate chance to break the deadlock as Tyson fed Perch on the edge of the box, only for the midfielder to miss hit his shot wide from a promising position.
Colchester too were still a threat, however, with Chris Iwelumo forcing yet another fine save from Pedersen, who scrambled to his left to palm around his post after the striker had connected with a spectacular overhead kick.
There was a moment of controversy as Tyson was booked for kicking the ball away after being judged offside, only for Danns - who had been booked for a foul in the 53rd minute - escaped further punishment for exactly the same offence 30 seconds later.
Forest's frustration was finally brought to an end as they took the lead in somewhat fortuitous fashion.
Tyson was again the creator as he advanced down the left and crossed dangerously for Holt. The striker was denied by a fine challenge from Brown on the penalty spot but the defender's clearance cannoned into the advancing Perch, deflecting the ball into the back of the net.
The goal was a little hard on Colchester but they did miss a late, golden opportunity to claim an equaliser, as Iwelumo volleyed over from eight yards with the goal at his mercy.