Colchester United survived a second-half fightback to record a 3-2 victory against League One leaders Bristol City.
Goals from Tom Lapslie, Macauley Bonne and Chris Porter gave the U's a 3-0 lead at half time, but James Tavernier and Aden Flint brought City back into the match in the second half and nearly rescued them a point.
The deadlock was broken after three minutes when Lapslie headed the ball in from close range, after Elliott Hewitt's cross.
Alex Gilbey, who returned to the lineup after injury, tested Bristol goalkeeper Frankie Fielding in the 10th minute before Bonne doubled Colchester's lead three minutes later.
Porter made it three in the 25th minute when he directed the ball into the bottom-right corner of the net.
Tavernier pulled a goal back in the 49th minute. The defender launched a ball into the penalty area from the halfway line, and the Colchester defence failed to deal with it as the ball bounced all the way into the net.
Bristol continued to push for a second, with Matt Smith and Tavernier both unable to beat Sam Walker.
The league leaders pulled another goal back on the hour mark when a Korey Smith free kick was headed into the net by central defender Flint.
The Robins continued to push for an equaliser and Aaron Wilbraham saw two shots saved in quick succession. Smith's long-range effort was also saved with 10 minutes remaining.
Colchester hung on to the victory to move out of the relegation zone, while Bristol remain top of League One despite the defeat.