Once a commercial aircraft is in the cruise phase, who determines the speed of the aircraft? Do pilots have the authority to fly at up to the maximum permissible speed of that plane, or does ATC decide on that depending on the approximate time it will take to reach the destination? Is it stated in the flight plan that the pilot cannot go beyond some specific speed even if the aircraft is capable of it?
R: "DLH123, maintain speed Mach .78"
In the TMA area, aircraft are sequenced for an approach and reduced to similar speeds to maintain lateral separation. These restrictions can be paired with conditions, until when the speed needs to be maintained:
R: "BER456, reduce speed 210 knots" R: "BER456, cleared ILS approach runway 24, maintain 170 knots indicated until outer marker / 5 DME"
Certain approach or arrival charts list maximum speeds for certain turns, marked with
MAX 210 KIAS, indicating that this turn should not be flown with more than 210 KIAS to make the radius.
Speed restrictions imposed by ATC need to be maintained until cancelled by the ATC unit:
R: "DLH123, no speed restrictions / resume normal speed"
The pilot however is responsible for ensuring a safe flight and can report that he is unable to follow the instructions due to performance limitations.
A: "DLH123, unable to comply, indicated airspeed will be 150 knots"
There is also legal considerations when it comes to aircraft speeds, such as general rules for traffic below certain altitudes or in some jurisdictions, only for certain airspace classes (related: What is the speed limit in European Airspace).
The FAA CFR 91.117 says:
§91.117 Aircraft speed.
(a) Unless otherwise authorized by the Administrator, no person may operate an aircraft below 10,000 feet MSL at an indicated airspeed of more than 250 knots (288 m.p.h.).
The German LuftVO however rules that a speed limit of 250 KIAS below FL100 only applies to VFR and IFR aircraft in airspaces class D,E,F,G and only to VFR aircraft in airspace class C. IFR aircraft in airspace class C do not have a speed limitation.
Regarding the general authority over a flight, see the related question:
Who has the higher authority, the pilot in command or ATC?
Pilots will mostly set the speed they want. In cruise, the planes tend to be further apart, and speed is less critical. Different planes fly at different speeds, and ATC usually uses altitude and heading as the primary means to separate them.
However, ATC will sometimes ask for different speeds as another way to separate aircraft. If a fast plane that wants to climb is underneath a slower plane, ATC may have the slower plane slow down a bit, and the faster plane speed up a bit so the faster plane can get far enough ahead to climb.
As the plane nears its destination, speed becomes more likely to be a factor. If there are delays at the destination, ATC may tell the pilots to slow down to minimize time spent in a holding pattern. This may also serve to sequence planes in for arrival, where ATC may ask for faster or slower speeds. Speed restrictions are much more common in arrival, which SentryRaven's answer describes.
ATC is providing collision separation services only. It is the responsability of the pilot to operate the airplane and to keep it under a safe flight envelope. So, speed:pilot, Heading-altitude:ATC :)