Flat vs smooth shading in photo-realism and glossy shaders
The answer given by @R.M is the way to go to achieve a photo-realistic result, but it requires to modify your mesh.
If you can't afford to slightly change your geometry, another solution exists: auto-smoothing.

Set your whole mesh as smooth shaded and go to the properties panel. 
Under the category object data / normals you will find the option Auto Smooth. Turn it on and tweak the angle to your liking. This will automatically set the faces above this angle threshold as flat and the others as smooth.



Here is a simple example with a cylinder:



Quick render with smooth shading, notice the unwanted behaviour near the top and bottom faces.



Quick render with auto smooth activated. The top and bottom faces are flat shaded while the other are smoothed.