Rob Cook scored 20 points as Gloucester overcame a persistent Newcastle Falcons at Kingsholm.
Cook converted his own try and added a penalty to make it 17-7 at the break.
Sioni Kalamafoni grabbed the first points, before Newcastle levelled through Chris York's converted effort.
Tries by James Hudson, Mike Tindall and Jonny May and two more Cook penalties ensured victory, but Newcastle earned bonus points with George McGuigan, Alex Tait, Andy Saull and Noah Cato tries.
The Cherry and Whites' second win in three games extends the Falcons' losing run to 11 Premiership matches, dating back to October.
Newcastle, the lowest-scoring team in this season's Premiership with just 10 tries from 16 games before the match, failed to land the first points with Phil Godman missing a penalty from just left of the posts.
Gloucester were a man down, following Hudson's sin-binning, when Kalamafoni stretched out to score after being stopped a metre short under a ruck.
York hit back for Newcastle and Godman added the extras to make it 7-7, but parity was only fleeting as Cook finished off a sweeping move and put the hosts further ahead with the boot.
Newcastle's first-half only got worse with England Under-20 international winger Zach Kibirige leaving on a stretcher with a suspected knee injury just 37 minutes into his top-flight debut.
Hudson scored a charge-down try in between Cook slotting his second penalty and setting both Tindall and May up for touchdowns.
Newcastle replied with three tries inside nine minutes from McGuigan, Saull and Tait, who secured the four-try bonus point with his effort.
Cook landed a third penalty before Cato crossed over and Joel Hodgson landed his third conversion to add a losing bonus point to their surprise haul having been 30 points down with less than 20 minutes remaining.
Gloucester Rugby boss Nigel Davies told BBC Radio Gloucestershire:
"People will say that we won with a bonus point, but I can assure you there is a very quiet changing room.
"To drop off the level of performance as bad as we did today is unacceptable and the players are fully aware of that.
"The momentum swung dramatically partly due to our discipline. We started to give a lot of penalties away and we didn't deal accurately with the pressure they put on us.
"(Mike) Tindall is a real stalwart and it's good to have him with his experience, but he's playing particularly well and adds a bit of balance to that back line."
Newcastle director of rugby Dean Richards:
"We said, when we were 37-7 down, let's see what happens if we go for four tries so we went out and got them - then we got a fifth.
"And the beauty was that the way the boys were playing, had we gone for another 10 minutes, it might have been a different result altogether because we were just letting rip by that time
"In the final quarter of the match, we turned it on. They had some of the opportunities they had in the first quarter, and this time they nailed them which is quite nice to see.
"For us, the big thing was making sure we took our chances and, I thought, Joel's [Hodgson's] kicking was outstanding and the last kick under pressure typified that.
"We have a huge amount of youngsters coming through so I am pleased with that. You don't want to expose them too much too soon but there is no doubt about it, the boys will have a big future in the game."
Gloucester: Cook; Sharples, Trinder, Tindall (capt), Thomas; Mills, Robson; Wood, Dawidiuk, Knight; Stooke, Hudson; Kalamafoni, Kvesic, Evans.
Replacements: May for M. Thomas (57), F. Burns for Mills (63), Murphy for Wood (53), Edmonds for Dawidiuk (53), Puafisi for Knight (45), James for Kalamafoni (70), B. Morgan for G. Evans (57). Not Used: Cowan.
Sin Bin: Hudson (12), Kvesic (70).
Newcastle Falcons: Tait; Cato, Tiesi, Barnes, Kibirige; Godman, Blair; Vickers, Lawson, Tomaszczyk; MacLeod, McKenzie; Welch (capt), Saull, York.
Replacements: Mayhew for Welch (30) Smith for Kibirige (37), J. Hodgson for Godman (60), Fury for Blair (57), McGuigan for Lawson (57), S. Wilson for Tomaszczyk (57). Not Used: Strain, Tomes.
Referee: Wayne Barnes (RFU)