Three early goals set up Bristol City for a thrilling 3-2 victory over West Brom at Ashton Gate to boost their Sky Bet Championship play-off hopes.
Inside only two minutes Marlon Pack caught Jake Livermore in possession, allowing him to pick out Andreas Weimann, whose low cross led to a clinical low finish from Josh Brownhill.
City doubled their lead after 16 minutes. Brownhill's long throw from the right was cleared back to him, and he headed across goal for Weimann to net with a close-range volley.
With Albion reeling and Ashton Gate rocking, Jack Hunt then headed home Jay da Silva's 19th-minute chip from the left to the far post to leave City fans were in dreamland.
Albion fought back in the second half, with Dwight Gayle glancing home a Stefan Johansen free-kick in the 48th minute.
When Jay Rodriguez netted from close range on 74 minutes after Craig Dawson nodded on a Gayle long throw the visitors sensed a reprieve but they could not find the equaliser.
City's breathtaking start might have brought even greater reward as Niclas Eliasson fired over on nine minutes when he should have done better from Famara Diedhiou's pass.
Head coach Johnson had switched centre-back Adam Webster to a new midfield role, recalling striker Weimann, surprisingly fit again following a foot injury, and winger Eliasson.
It took Albion half an hour to recover from the shock of conceding so early, with City goalkeeper Max O'Leary doing well to tip over a Kyle Edwards free kick and save a low shot from Dwight Gayle.
At the other end, Sam Johnstone dived to smother a long-range effort from Marlon Pack and the Albion keeper had to be alert again to deny Eliasson and Nathan Baker as City continued to carve out chances.
Eros Pisano, a 26th-minute substitute for Hunt, who had been booked, did well to block a Gayle shot on the stroke of half-time and Albion left the pitch to boos from their travelling supporters.
Those turned to cheers when Gayle pulled a goal back. But it might have been 4-1 on 57 minutes when Da Silva burst onto a Brownhill pass and saw his low shot hit the far post.
Diedhiou fired just over as City wrestled back the initiative. But it was a much closer contest as Gayle saw another effort deflected over.
Both sides had further chances before Albion applied late pressure only for O'Leary to distinguish himself again with a diving save from substitute Kieran Gibbs.
Three wins and a draw from four games since the international break have stamped City as genuine promotion contenders.
ga('create', 'UA-72310761-1', 'auto', {'name': 'pacontentapi'});
ga('pacontentapi.set', 'referrer', location.origin);
ga('pacontentapi.set', 'dimension1', 'By Press Association Sport staff');
ga('pacontentapi.set', 'dimension2', 'fb2cb347-0600-4e62-b85f-28e61cea78fd');
ga('pacontentapi.set', 'dimension3', 'paservice:sport,paservice:sport:club-news,paservice:sport:football,paservice:sport:match-reports');
ga('pacontentapi.set', 'dimension6', 'story');
ga('pacontentapi.set', 'dimension7', 'composite');
ga('pacontentapi.set', 'dimension8', null);
ga('pacontentapi.set', 'dimension9', 'sport:football');
ga('pacontentapi.send', 'pageview', { 'location': location.href, 'page': (location.pathname + location.search + location.hash), 'title': 'Bristol City survive West Brom revival to maintain play-off push'});