The left-hander scored 121 not out and was associated in a record 187-run partnership for the second wicket with captain Habibul Bashar (76) as the home side reached 238-2 at tea after electing to bat on Sunday.
Nafees, whose previous highest score in four Tests was 51, batted positively from early on and was bothered by neither the pace nor the spin of the unofficial world champions.
The 20-year-old had struck 18 fours off 157 balls by the break. He got to his century with a four to fine-leg off leg-spinner Shane Warne, who looked ineffective against the determined pair.
Bashar attacked Warne often and helped himself to 11 fours off 113 balls, consolidating the home side's position after they reached 144-1 by lunch.
Their stand bettered the previous Bangladeshi record of 167 for any wicket, between Bashar and Javed Omar against Pakistan at Peshawar in 2003.
Nafees was dropped on 66 by Warne at the lone wide slip off paceman Jason Gillespie. He then put his head down once again to frustrate the bowlers.
Bashar was out on the stroke of tea when he tried to pull leg-spinner Stuart MacGill but gave a catch to Brett Lee at mid-on.
The home side reached 200 in the 44th over after racing to 100 in just the 20th over, with Nafees playing fine shots all over the ground and Bashar joining him in the run feast.
Nafees had earlier put on 51 with opener Omar (27), who was trapped leg-before by Gillespie.
Omar struck six fours including two consecutive ones down the leg side off new-ball bowler Stuart Clark.
The second and final Test will be held in Chittagong from April 16.
Bangladesh have lost both their previous Tests to Australia by innings margins.