Australia were in dire straits against England in Birmingham at 122-8 but their last two wickets more than doubled the score and Smith was last man out for 144 in a total of 284.
Rory Burns and Jason Roy then survived two overs as the hosts ended the day on 10-0.
Former captain Smith, who returned to Australia duty during the recent World Cup that England won, was subjected to repeated jeers by a partisan crowd.
But he answered the boos in style with his first international century since his ban and his 24th in Tests.
“It hasn’t really sunk in yet,” Smith told BBC Radio. “Obviously been a while since I’ve been able to put on the whites and the baggy green (cap).
“I’m really proud of the way I was able to stand up today. We were in a bit of trouble there and we had to dig deep on a wicket that wasn’t easy.”
Australia had slumped to 17-2 when Smith came in to bat after current skipper Tim Paine had won the toss.
Wickets fell steadily but Smith found the ally he needed in Peter Siddle, with the recalled number 10 making a valuable 44 — the second-best score of the innings — in a ninth-wicket partnership of 88.
It had seemed England would not suffer from the absence of James Anderson, England’s all-time leading Test wicket-taker, who only bowled four overs in the innings before suffering a right calf injury.
Long-time new-ball partner Stuart Broad took 5-86 in 22.4 overs and fellow paceman Chris Woakes chipped in with 3-58 on his Warwickshire home ground.
But Australia’s total may yet be enough to embarrass an England side who collapsed to 85 all out before beating Ireland at Lord’s last week.