A late goal from Leif Davis ensured Ipswich kept pace with Championship leaders Leicester after coming from behind to beat Bristol City 3-2.
All five goals came in a frantic second half, with the Robins taking the lead through Anis Mehmeti only for substitute Ali Al-Hamadi to equalise.
Tommy Conway's header put City back in front but Conor Chaplin drew the teams level with a header from a free-kick by Davis before the Town defender sealed the three points.
Al-Hamadi had a penalty saved by City's goalkeeper Max O'Leary but he was unable to stop Ipswich's sixth victory on the trot.
It was a dour first half with few chances before the game came to life in the second period.
Chaplin struck the outside of the left-hand post in the 33rd minute after Kieffer Moore's flicked header from a corner, while at the other end Harry Cornick's cross was met by Nahki Wells, who headed straight at Vaclav Hladky.
Just before the half-time whistle, a mix-up in the Ipswich defence between Luke Woolfenden and Axel Tuanzebe led to the ball falling to Mehmeti.
He set up skipper Jason Knight but his effort from inside the box deflected off Woolfenden and glanced just past the outside of Hladky's right-hand post, with the goalkeeper stranded.
The visitors broke the deadlock in the 54th minute when Mehmeti's shot caught a slight deflection off Massimo Luongo to find its way into the back of the Ipswich net. And Wells had a wonderful chance to extend City's lead when his shot struck the angle of bar and post and rebounded to safety.
But Ipswich struck back eight minutes later through substitute Al-Hamadi, who had only been on the pitch less than two minutes, turning Davis' goal-bound shot into the net following Wes Burns' cross into the City penalty area.
Hla
Read on m.allfootballapp.com