Ian Bell's unbeaten innings of 105 helped England finish the third day of the fourth Ashes Test on 234-5.
Australia returned to the crease at the start of the day on 222-5, just 16 short of the host's first innings total, but struggled to capitalise from a good position.
Brad Haddin fell victim to Graeme Swann before the spin bowler took the crucial wicket of Chris Rogers, whose magnificent innings of 110 came to an end.
Ryan Harris added a quickfire 28 but a tail end of Peter Siddle (5) and Nathan Lyon (4) could not provide any further resistance.
Alastair Cook and Joe Root took to the crease with England 32 runs behind, but Root was dismissed for just two runs as a wonderful delivery from Harris nipped back to rattle the 22-year-old's off-stump.
Cook followed Root to the pavilion shortly after lunch when he edged Harris' delivery to Haddin, and Harris claimed his third wicket in quick succession when his devious bouncer deflected to Haddin off Jonathan Trott's glove.
Kevin Pietersen and Bell then formed a strong partnership to take England past 100, but soon after tea the South African-born batsman fell victim to Nathan Lyon once more.
Bell continued his fine Ashes form with some wonderful shots and was joined at the crease by Jonny Bairstow before bad light threatened to end the day's play early.
Bairstow took to the crease once more, but was soon dismissed by Nathan Lyon when he edged the spinner's delivery to Haddin.
Bell, who batted imperiously throughout the afternoon, reached his third century of the series with a single as England gained a slight advantage with two days remaining.