Alex Hales fell one run short of a century but did enough to set up a five-wicket win for England over South Africa in the second one-day international at St George’s Park yesterday.