Cook then ended a 10-innings stretch without a half-century, the longest drought of his 151-Test career, to claim his 32nd Test ton.
England trail by 135 runs, with Cook and Joe Root (49no) well set in an unbeaten 112-run stand.
Before this Test, Broad had taken only five wickets and Cook had mustered 83 runs in six innings.
The Australians did pick up two early wickets when Lyon took a diving one-handed catch off his own bowling to remove Mark Stoneman for 15 and Josh Hazlewood trapped Vince James lbw for 17 but struggled in the absence of injured paceman Mitchell Starc and an out-of-sorts Pat Cummins, who was restricted to just 11 overs because of a stomach bug.
Smith squandered his chance of another century when he chopped a wide delivery from England debutant Tom Curran onto his stumps when he was on 76, then dropped a sharp catch off Cook at slip when he was on 66.
But instead Warner top-edged a catch to mid-on and walked off to the jubilation of the England team, only for replays to detect a no-ball for Curran overstepping, meaning Warner was called back to the crease.
The 28-year-old had not been dismissed in a Melbourne Test match since Boxing Day 2014 and was on track to repeat the feat on a bat-friendly MCG pitch. With his dismissal Smith has now scored 502 runs in the Ashes series at a stunning average of 125.50. Warner went on to score 103.
On day three, it will be the goal of the third-wicket pair, and the rest of England's batting line-up, to forge a lead large enough to negate batting last on a surface that is likely to get slower.