The Turkish striker broke the deadlock in the 75th minute when Croatian keeper Danijel Subasic could only push a shot from Oguzhan Ozyakup away towards the feet of Tosun who fired the ball into the net.
Turkey's prospects had been dented on Saturday when they lost 2-0 to Ukraine but they are back in contention after the win in front of a raucous home crowd in the northwestern Turkish city of Eskisehir.
Chances fell to both teams in an attacking opening spell, with Croatia almost scoring from a Luka Modric free kick in the 10th minute that ricocheted of Burak Yilmaz's shoulder and onto the post as he tried to clear.
A minute later Turkey had a good opportunity to take the lead when Arda Turan crossed to Tosun, but he fired the ball wide from close range.
News that makes sense
Your trusted source for staying up-to-date with the world around you. Get free daily news updates and analysis, straight to your inbox.
The second half started in a similar attacking fashion, with a Modric free kick setting up Dejan Lovren, who could only head the ball straight at Turkish keeper Volkan Babacan.
A few minutes of sustained Turkish pressure then followed but both Kaan Ayhan and Burak Yilmaz fired wide.
Tosun's goal took Turkey up to 14 points in Group I after eight games, level with Ukraine on points and trailing Croatia and Iceland who both have 16 points after the latter beat Ukraine.
(Writing by Daren Butler,; Editing by Jeremy Gaunt and Toby Davis)
